假设我有一个表,它在一段时间内将所有导出保存在Microsoft SQL数据库中:
Name:
ExportTable
Columns:
id - numeric(18)
exportdate - datetime
为了获得每周的出口数量,我可以运行以下查询:
SELECT DATEPART(ISO_WEEK,[exportdate]) as 'exportdate', count(exportdate) as 'totalExports'
FROM [ExportTable]
Group By DATEPART(ISO_WEEK,[exportdate])
order by exportdate;
返回:
exportdate totalExports
---------- ------------
27 13
28 12
29 15
30 8
31 17
32 10
33 7
34 15
35 4
36 18
37 10
38 14
39 14
40 21
41 19
是否有可能按季度汇总周结果,以便输出变得像下面的那样?
更新 很抱歉不清楚,我希望当前的结果可以将upp与之前的结果相加到新的季度。 注意第41周包含21 + 19 = 40 第39周包含157 (13 + 12 + 15 + 8 + 17 + 10 + 7 + 15 + 4 + 18 + 10 + 14 + 14)
exportdate totalExports Quarter
---------- ------------ -------
27 13 3
28 25 3
29 40 3
30 48 3
31 65 3
32 75 3
33 82 3
34 97 3
35 101 3
36 119 3
37 129 3
38 143 3
39 157 3 -- Sum of 3 Quarter values.
40 21 4 -- New Quarter show current week value
41 40 4 -- (21+19)
答案 0 :(得分:2)
你可以使用它。
SELECT
DATEPART(ISO_WEEK,[exportdate]) as 'exportdate'
, SUM( count(exportdate) ) OVER ( PARTITION BY DATEPART(QUARTER,MIN([exportdate])) ORDER BY DATEPART(ISO_WEEK,[exportdate]) ROWS UNBOUNDED PRECEDING ) as 'totalExports'
, DATEPART(QUARTER,MIN([exportdate])) [Quarter]
FROM [ExportTable]
Group By DATEPART(ISO_WEEK,[exportdate])
order by exportdate;
答案 1 :(得分:0)
您可以使用案例陈述将日期分成四分之一。
e.g。
CASE
WHEN EXPORT_DATE BETWEEN '1' AND '4' THEN 1
WHEN Export_Date BETWEEN '5' and '9' THEN 2
ELSE 0 AS [Quarter]
END
这只是一个例子,但你明白了。
然后您可以使用案例中的别名
答案 2 :(得分:0)
{{1}}