繁体   English   中英

如何从SQL查询中获取结果的总和

[英]How to get the sum of a result from a query in SQL

使用SQL Server 2008,我有两个表: SALESORD_HDRSALESORD_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

但失败了,说

消息8120,第16级,状态1,第1行
在选择列表中,列“ SALESORD_LINES.STOCKCODE”无效,因为该列既未包含在聚合函数中,也未包含在GROUP BY子句中。

会有一种我不知道的SUM语法:)

任何帮助将不胜感激!

您只需要添加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]因为您忘记了引用字段来自哪个表。

@Lamak和@Phil Cross都给出了很好的答案。 修改后的代码为:

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

这可行。 谢谢你们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM