报表MTD、YTD查询语句

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Benjayming/article/details/82964958

经常会有报表需要查询MTD和YTD汇总。这里解释一下含义:
MTD(Month To Date):从月初到当前日期
MTD(Year To Date):从年初到当前日期

假设有表EmpLeaveCNT(LeaveDate,LeaveCount),代表每个日期的离职人数(如下图所示),现要求查询离职人数的MTD和YTD。
在这里插入图片描述

这其实是一个Running Total的问题,方法有非常多,传统可用标量子查询、自连接的方式,如果是SQL Server 2012及以上版本,可以用窗口函数解决:

SELECT 
LeaveDate,LeaveCount
,CONVERT(CHAR(7),DATEADD(DAY,1,EOMONTH(LeaveDate,-1)),120) AS MTD_Month
,SUM(LeaveCount) OVER(PARTITION BY DATEADD(DAY,1,EOMONTH(LeaveDate,-1)) ORDER BY LeaveDate) AS MTD_LeaveCount
,YEAR(DATEADD(YEAR,DATEDIFF(YEAR,0,LeaveDate),0)) AS YTD_Year
,SUM(LeaveCount) OVER(PARTITION BY DATEADD(YEAR,DATEDIFF(YEAR,0,LeaveDate),0) ORDER BY LeaveDate) AS YTD_LeaveCount
FROM EmpLeaveCNT

结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Benjayming/article/details/82964958