【发布时间】:2017-05-15 14:36:40
【问题描述】:
我有这个查询,它计算我每月的退货发票数量:
SELECT MONTH(ORIN.DocDate) mes, COUNT(*) tot
FROM ORIN
WHERE DATEDIFF(MONTH, ORIN.DocDate, GETDATE()) <= 12
GROUP BY MONTH(ORIN.DocDate)
现在我只需要获取项目数量超过 100 的发票。为此,我必须加入另一个表(发票项目):
INNER JOIN RIN1 ON ORIN.DocEntry = RIN1.DocEntry
我会把这个放在某个地方(必须是 SUM,因为一张发票可以有很多项目):
WHERE SUM(RIN1.Quantity) > 100
问题是我不知道如何进行此查询。我的最后一次尝试如下,但它没有带来正确的价值观:
SELECT MONTH(ORIN.DocDate) mes, COUNT(*) tot
FROM ORIN
INNER JOIN RIN1 ON ORIN.DocEntry = RIN1.DocEntry
WHERE DATEDIFF(MONTH, ORIN.DocDate, GETDATE()) <= 12
GROUP BY MONTH(ORIN.DocDate)
HAVING SUM(RIN1.Quantity) > 100
【问题讨论】:
-
您使用的是哪种数据库/风格或 SQL?
-
我认为您不需要在查询中使用
HAVING子句,因为Quantity本身解释了数字,可以将AND RIN1.Quantity>100添加到您的Where子句中 -
问题是一张发票可以有多个项目,而 RIN1 是每条记录一个项目。
-
SQL Server 2008 R2
标签: sql sql-server sql-server-2008 sum