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