简体   繁体   English

计算年初至今和上一年年初至今

[英]calculate YTD & Prev Year YTD

I want to calculate YTD (1st Jan 2016 to last date of a month) & Prev year YTD (1st Jan 2015 to last date of a month) for each Client. 我想为每个客户计算年初至今(2016年1月1日至一个月的最后一个日期)和上一年年初至今(2015年1月1日至一个月的最后一个日期)。

Below is the SQL Query that i have attempted, but here i get two rows for each Client instead of 1 as I'm using 'CASE WHEN'. 下面是我尝试过的SQL查询,但是在这里我为每个客户端得到两行而不是1行,因为我正在使用“ CASE WHEN”。

My question is how can i get the result in just one row per Client instead of one row for YTD & another row for YTD-1 for each client? 我的问题是如何在每个客户端仅一行中获取结果,而不是对于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

Kindly Help! 请帮助!

Thanks, Ramesh 谢谢,拉梅什

Remove YEAR([Purchase_Date]) from the GROUP BY part. GROUP BY部分中删除YEAR([Purchase_Date])

Also, instead of: 另外,代替:

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

use: 采用:

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

And the same for 'YTD' column. 与“ YTD”列相同。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM