计算YTD&年初至今

时间:2016-09-15 08:52:07

标签: sql sql-server

我想计算YTD(2016年1月1日至最后一个月的日期)&每个客户的上一年度(2015年1月1日至一个月的最后一个日期)。

下面是我尝试过的SQL查询,但是在这里我得到每个客户端的两行而不是1行,因为我正在使用' CASE WHEN'。

我的问题是我如何才能在每个客户端的一行中获得结果,而不是YTD&每个客户的YTD-1的另一行?

SELECT [ClientName]
, (CASE WHEN YEAR([Purchase_Date]) = YEAR(GETDATE())-1 THEN (count(Activity)) end) AS 'YTD-1'
, (CASE WHEN YEAR([Purchase_Date]) = YEAR(GETDATE()) THEN (count(Activity)) end) AS 'YTD'
FROM Purchases
WHERE MONTH([Purchase_Date]) <= MONTH(GETDATE())
GROUP BY [ClientName], YEAR([Purchase_Date])
ORDER BY 1

请帮忙!

谢谢, 拉梅什

1 个答案:

答案 0 :(得分:0)

YEAR([Purchase_Date])部分删除GROUP BY

此外,而不是:

(CASE WHEN YEAR([Purchase_Date]) = YEAR(GETDATE())-1 THEN (count(Activity)) end) AS 'YTD-1'

使用:

count(CASE WHEN YEAR([Purchase_Date]) = YEAR(GETDATE())-1 THEN Activity else NULL end) AS 'YTD-1'

“YTD”专栏也是如此。