【发布时间】:2019-11-21 22:56:24
【问题描述】:
我有一张带有此模板的表格:
表_1
+----------+------------------+-----+
| Code | DateTime | Qty |
+----------+------------------+-----+
| 1 |08/31/2019 18:30 | 100 |
| 1 |09/01/2019 18:30 | 150 |
| 2 |09/03/2019 18:30 | 80 |
| 2 |09/03/2019 18:30 | 100 |
| 3 |10/15/2019 18:30 | 100 |
+----------+------------------+-----+
我需要按代码、年份、月份和总和(数量)分组。
我已经选择了这张桌子:
Select
Year(DateTime) as Year,
DATENAME(Month,Datetime) as Month,
CODE,
SUM(QTY) as Qty,
From
Table_1
Group by
Code,
Year(DateTime),
DATENAME(Month,Datetime)
Order by Code
但是当代码在两个不同的月份中有日期时间时,该代码有两行:
+----+-----------+-=---+-----+
|Year| Month |Code | Qty |
+----+-----------+-----+-----+
|2019| August | 1 | 100 |
|2019| September | 1 | 150 |
|2019| September | 2 | 180 |
|2019| October | 3 | 100 |
+----+-----------+-----+-----+
如何按代码分组,在这种情况下,行数超过一个月, 考虑过去一个月,例如:
+----+-----------+-=---+-----+
|Year| Month |Code | Qty |
+----+-----------+-----+-----+
|2019| September | 1 | 250 |
|2019| September | 2 | 180 |
|2019| October | 3 | 100 |
+----+-----------+-----+-----+
希望我是清楚的。
【问题讨论】:
-
看起来你想使用 MAX 月份而不是按它分组。
-
“但是当代码在两个不同的月份中有日期时间时,该代码有两行”,但这是有道理的。 9 月代码
1的SUM是 150,而不是 250.. -
@SeanLange 但是月份不是按字母顺序排列的
-
但
DATENAME(MONTH,MAX(Yourdate))是@JoelCoehoorn ;) -
@JoelCoehoorn 我意识到这一点。看起来他们想要最近一个月。
标签: sql sql-server