【发布时间】:2010-10-05 16:03:06
【问题描述】:
我的连接不正确,并且还没有找到正确的方法来获取我需要的数据,因为下面的 3 个表(客户、SalesHeader、SalesDetail)我正在尝试获取每行有 1 个客户的行项目以及 GL Acct 4000 中的所有销售明细和 GL Acct 5000 中的所有销售交易的总和。还有更多列,以及我想添加的其他几个 GL 帐户,但我已将其分解为最简单的形式试着让它工作。我在下面提供了模拟数据以及我未能成功处理的 SQL 语句的最新版本。如果有人可以帮助我找出我在此 SQL Select 语句中做错了什么,将不胜感激。
客户
CustID | CustCode
------------------
1 | AAA111
2 | AN8348
SalesHeader
SH_ID | SH_CustID | SH_GLACCT
-------------------------------
1 | 1 | 4000
2 | 1 | 5000
3 | 1 | 4000
4 | 2 | 5000
销售详情
SD_ID | SD_HID | Price
--------------------------
1 | 1 | 100.00
2 | 1 | 540.00
3 | 2 | 100.00
4 | 3 | 600.00
5 | 4 | 50.00
6 | 4 | 75.00
所需的输出
地毯 = 4000 垫 = 5000
CustID | CustCode | Carpet (Sum all SH_GLACCT = 4000) | PAD (Sum all SH_GLACCT = 5000)
-------------------------------------------------------------------------------------------
1 | AAA111 | 1240.00 | 100.00
2 | AN8348 | 0.00 | 125.00
不正确的 SQL(两个金额都超过了应有的值)
SELECT C.CustID, C.CustCode, SUM(ADH.Price) AS Carpet, SUM(APD.Price) As Pad
FROM Customer AS C
LEFT OUTER JOIN SalesHeader AS ACH On C.CustID = ACH.SH_CustID AND ACH.SH_GLACCT = '4000'
LEFT OUTER JOIN SalesDetail AS ADH On ACH.SH_ID = ADH.SD_HID
LEFT OUTER JOIN SalesHeader AS APH On C.CustID = APH.SH_CustID AND APH.SH_GLACCT = '5000'
LEFT OUTER JOIN SalesDetail AS APD On APH.SH_ID = APD.SD_HID
GROUP BY C.CustID, C.CustCode
【问题讨论】:
标签: sql sql-server