Sql server 结合2个表结果的SQL Server存储过程

Sql server 结合2个表结果的SQL Server存储过程,sql-server,stored-procedures,Sql Server,Stored Procedures,我有两张桌子: 客户交易 Id (int auto int) CustomerName (varchar) CustomerNumber (int) Date (date) WeeklyAmount (int) 客户: CustomerName (varchar) CustomerNumber (int) CustomerType (int) CustomerDate (date) 此数据库未规范化,我无法更改它。客户名称和我需要做的事情: 我需要一个结果,该结果将显示一个表,其中包含与客户

我有两张桌子:

客户交易

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

CustomerName (varchar)
CustomerNumber (int)
CustomerType (int)
CustomerDate (date)
此数据库未规范化,我无法更改它。
客户名称
和我需要做的事情:

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

我正在使用:

Select
    CustomerNumber, SUM (WeeklyAmount) as Total 
from  
    Customers.RECORDS 
GROUP BY 
    CustomerNumber; 
获取每个
客户编号的总和。问题是我不能将
客户名称
包括在分组中。有时,客户的名字会随着时间的推移而改变。我被告知从
客户
获取数据,并将其与上面的结果进行匹配,然后匹配
客户编号

问题是,我不知道使用存储过程。有人知道这是怎么做到的吗? 我需要所有的行都匹配

Select
CustomerNumber, SUM (WeeklyAmount) as Total from  
Customers.RECORDS GROUP BY CustomerNumber; 
什么是客户记录?这有点令人困惑。除此之外,我会回答

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
如果这不是你想要的,你必须重新措辞你的问题。要理解真正的问题在哪里有点难。通常我会写一些不同的查询,但这应该处理非规范化问题

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