我希望通过本周从给定的起始日期为不确定的未来汇总数据。通常我只想转储设置到Excel仪表板和组那里通过枢轴等结果,但我在写这个查询移交给一组用户,并允许他们通过前端BI应用程序的访问,所以我想尽可能完整地给予他们。tSQL根据日期字段按星期汇总数据?
我目前的方法显然是低效率的,所以我很想找到一个简单的公式来做到这一点(或一种方式来创建一个可变的一周削减所有的重复脚本)。我曾考虑过使用DATEADD,但尚未能使其工作。
我目前的解决方案的例子如下:
SELECT
'Week Ending' = (CASE
WHEN YEAR(duedate) = '2015'
THEN (CASE
WHEN datepart(wk, duedate) = 32 THEN '2015/08/07'
WHEN datepart(wk, duedate) = 33 THEN '2015/08/14'
WHEN datepart(wk, duedate) = 34 THEN '2015/08/21'
WHEN datepart(wk, duedate) = 35 THEN '2015/08/28'
WHEN datepart(wk, duedate) = 36 THEN '2015/09/04'
WHEN datepart(wk, duedate) = 37 THEN '2015/09/11'
WHEN datepart(wk, duedate) = 38 THEN '2015/09/18'
WHEN datepart(wk, duedate) = 39 THEN '2015/09/25'
WHEN datepart(wk, duedate) = 40 THEN '2015/10/02'
WHEN datepart(wk, duedate) = 41 THEN '2015/10/09'
WHEN datepart(wk, duedate) = 42 THEN '2015/10/16'
WHEN datepart(wk, duedate) = 43 THEN '2015/10/23'
WHEN datepart(wk, duedate) = 44 THEN '2015/10/30'
WHEN datepart(wk, duedate) = 45 THEN '2015/11/06'
WHEN datepart(wk, duedate) = 46 THEN '2015/11/13'
WHEN datepart(wk, duedate) = 47 THEN '2015/11/20'
WHEN datepart(wk, duedate) = 48 THEN '2015/11/27'
WHEN datepart(wk, duedate) = 49 THEN '2015/12/04'
WHEN datepart(wk, duedate) = 50 THEN '2015/12/11'
WHEN datepart(wk, duedate) = 51 THEN '2015/12/18'
WHEN datepart(wk, duedate) = 52 THEN '2015/12/25'
WHEN datepart(wk, duedate) = 53 THEN '2016/01/01'
END)
WHEN YEAR(duedate) = '2016'
THEN (CASE
WHEN datepart(wk, duedate) = 1 THEN '2016/01/01'
WHEN datepart(wk, duedate) = 2 THEN '2016/01/08'
WHEN datepart(wk, duedate) = 3 THEN '2016/01/15'
WHEN datepart(wk, duedate) = 4 THEN '2016/01/22'
END)
END),
SUM(linetotal)
FROM
PurchaseOrderDetail
WHERE
YEAR(duedate) > '2014'
GROUP BY
YEAR(duedate), DATEPART(wk, duedate)
我想答案很简单,但我一直没能找到完全是我正在找呢。
[如何让周和SQL Server 2008的周最后一天的第一天?(HTTP的可能重复://计算器.COM /问题/ 21330671 /如何对获得-首日的最周和最后一天的星期几,在-SQL服务器2008年) –