SQL Server存储过程组合2个表结果

时间:2013-07-17 17:54:19

标签: sql-server stored-procedures

我有两张桌子:

CustomerTransaction

Id (int auto int)
CustomerName (varchar)
CustomerNumber (int)
Date (date)
WeeklyAmount (int)

客户

CustomerName (varchar)
CustomerNumber (int)
CustomerType (int)
CustomerDate (date)

此数据库未规范化,我无法更改它。 CustomerName以及我需要做的事情:

我需要一个结果,该结果将显示一个表,其中包含来自Customers的所有信息,用于与客户编号匹配的每一行。在CustomerTransaction中,我只是按其金额的CustomerName分组所有总金额。

我正在使用:

Select
    CustomerNumber, SUM (WeeklyAmount) as Total 
from  
    Customers.RECORDS 
GROUP BY 
    CustomerNumber; 

获取每个CustomerNumber的总和。问题是我不能在组中包含CustomerName。有时,客户的名称会随着时间而变化。我被告知从Customers获取数据并将其与上面的结果相匹配并匹配CustomerNumbers

问题是我不知道存储过程。有谁知道这是怎么做的? 我需要匹配所有行。

2 个答案:

答案 0 :(得分:1)

Select
CustomerNumber, SUM (WeeklyAmount) as Total from  
Customers.RECORDS GROUP BY CustomerNumber; 

什么是Customers.RECORDS?这有点令人困惑。除此之外,我会回答

SELECT 
c.*,
sq.Total
FROM
(
SELECT 
CustomerNumber,
SUM(WeeklyAmount) AS Total
FROM 
CustomersTransaction
GROUP BY CustomerNumber
) sq
INNER JOIN Customers c ON c.CustomerNumber = sq.CustomerNumber

如果那不是你想要的,你必须改写你的问题。有点难以理解实际问题在哪里。通常我会把查询写得有些不同,但这应该处理非规范化问题。

答案 1 :(得分:0)

Select
Trans.CustomerNumber, C.CustomerName, Trans.SUM (WeeklyAmount) as Total
from  
CustomerTransaction Trans
join
 Customers C
on
Trans.CustomerNumber=C.CustomerNumber
GROUP BY 
Trans.CustomerNumber,C.CustomerName
相关问题