sql - SUM SQL - 按年份选择使用/分组
问题描述
我想对所购买商品的数量求和,但无法使用 WITH 得到结果(程序上,我想更简单)
WITH Purchases (ItemCode, Quantity, DocDate)
AS
(
SELECT ItemCode, Quantity, OPOR.DocDate
FROM OPOR INNER JOIN POR1 ON OPOR.DocEntry = POR1.DocEntry
WHERE Canceled = 'N'
GROUP BY OPOR.DocDate,ItemCode,QuantitY
)
SELECT ItemCode, SUM(Quantity) AS Qty, YEAR(DocDate) AS Year
FROM Purchases
WHERE DocDate > DATEADD(YEAR,-3,GETDATE()) AND ItemCode = '01.BEE.05'
GROUP BY ItemCode,DocDate
ORDER BY ItemCode;
这就是我所知道的。
+-------------+--------+--------+
| "ItemCode" | "Qty" | "Year" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2018" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2019" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2019" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2019" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2019" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2019" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2019" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2020" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2020" |
+-------------+--------+--------+
| "01.BEE.05" | "9000" | "2020" |
+-------------+--------+--------+
| "01.BEE.05" | "3000" | "2020" |
+-------------+--------+--------+
这就是我想要结束的
+-------------+---------+--------+
| "01.BEE.05" | "3000" | "2018" |
+-------------+---------+--------+
| "01.BEE.05" | "18000" | "2019" |
+-------------+---------+--------+
| "01.BEE.05" | "18000" | "2020" |
+-------------+---------+--------+
解决方案
您按选择列表中的DocDate
而不是分组:YEAR(DocDate)
WITH Purchases (ItemCode, Quantity, DocDate)
AS
(
SELECT ItemCode, Quantity, OPOR.DocDate
FROM OPOR INNER JOIN POR1 ON OPOR.DocEntry = POR1.DocEntry
WHERE Canceled = 'N'
GROUP BY OPOR.DocDate,ItemCode,QuantitY
)
SELECT ItemCode, SUM(Quantity) AS Qty, YEAR(DocDate) AS Year
FROM Purchases
WHERE DocDate > DATEADD(YEAR,-3,GETDATE()) AND ItemCode = '01.BEE.05'
GROUP BY ItemCode, YEAR(DocDate)
-- Here -----------^
ORDER BY ItemCode;
推荐阅读
- c++ - 是否可以在不知道成员名称的情况下检测一个类是否具有具有某种类型/返回类型的成员?
- javascript - 如何在有条件的数组中呈现布尔值
- r - 当需要多个 data.frame 的名称时,如何使用 tidyverse 动词进行 for 循环?
- logstash - 有什么方法可以在 logstash 端屏蔽包含敏感信息的日志事件的一部分?
- javascript - 使用不同的键将嵌套 JSON 转换为 JavaScript 中的节点和链接结构
- python - 我如何将这些日期行合并到月份?
- python - 使用openpyxl在excel工作表中打印python数据框时如何跳过默认数据框索引
- oracle - 如何将oracle客户端连接到virtualbox
- c# - 通过接口实例化子类时访问基类的方法
- ajax - 2021 年使用 ajax http 调用的第三方 Cookie 阻止问题(ITP 限制)?