使用SQL Server 2008,我有两个表:SALESORD_HDR
和SALESORD_LINES
公共标识符为SALESORD_HDR.SEQNO
我想找到此查询的结果总和:
Select
SOL.STOCKCODE as SC,ORD_QUANT as OQ
from
SALESORD_LINES SOL
INNER JOIN
SALESORD_HDR SOH ON SOL.HDR_SEQNO = SOH.SEQNO
WHERE
SOL.HDR_STATUS = '6' AND SOH.ORDERDATE > DATEDIFF(D,120,getdate())
ORDER BY
SOL.STOCKCODE
这给出了正确的数据。但我想在ORD_QUANT
的每条记录中找到STOCKCODE
中值的总和。
我试过这个:
Select SOL.STOCKCODE as SC,SUM(ORD_QUANT) as OQ
但它失败了,说
Msg 8120,Level 16,State 1,Line 1
列'SALESORD_LINES.STOCKCODE'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
将会有一种方法来解释我不知道的SUM :)
非常感谢任何帮助!
答案 0 :(得分:1)
您只需添加GROUP BY
子句:
Select SOL.STOCKCODE as SC,SUM([tableReference].ORD_QUANT) as OQ
from SALESORD_LINES SOL
INNER JOIN SALESORD_HDR SOH
ON SOL.HDR_SEQNO = SOH.SEQNO
WHERE SOL.HDR_STATUS = '6' AND SOH.ORDERDATE > DATEDIFF(D,120,getdate())
GROUP BY SOL.STOCKCODE
ORDER BY SOL.STOCKCODE
我还添加了一些伪代码[tableReference]
,因为您忘记引用字段来自哪个表。
答案 1 :(得分:0)
Select SOL.STOCKCODE as SC,SUM(SOL.ORD_QUANT) as OQ
from SALESORD_LINES SOL
INNER JOIN SALESORD_HDR SOH
ON SOL.HDR_SEQNO = SOH.SEQNO
WHERE SOL.HDR_STATUS = '6' AND SOH.ORDERDATE > DATEDIFF(D,120,getdate())
GROUP BY SOL.STOCKCODE
ORDER BY SOL.STOCKCODE
这很有效。谢谢你们。