[英]Oracle SQL Developer how to get a sum from the result of another query
[英]How to get the sum of a result from a query in SQL
使用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
但失败了,说
消息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.