2016-09-15 4 views
0

Ich möchte YTD berechnen (1. Januar 2016 bis zum letzten Tag eines Monats) & Prev Jahr YTD (1. Januar 2015 bis zum letzten Tag eines Monats) für jeden Client.berechnen YTD & Prev Jahr YTD

Unten ist die SQL-Abfrage, die ich versucht habe, aber hier bekomme ich zwei Zeilen für jeden Client statt 1, da ich "CASE WHEN" verwende.

Meine Frage ist, wie kann ich das Ergebnis in nur einer Zeile pro Client statt einer Zeile für YTD & eine andere Zeile für YTD-1 für jeden Client bekommen?

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 

Bitte helfen!

Danke, Ramesh

Antwort

0

YEAR([Purchase_Date]) vom GROUP BY Teil entfernen.

auch statt:

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

Verwendung:

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

Und das gleiche gilt für Spalte 'YTD'.

+0

Danke Tomaz für Ihre schnelle Hilfe! Das Abfrageergebnis ist wie gewünscht. –