2016-08-03 15 views
0

Daten für jeden Monat gibt es bis Dezember. Ich möchte eine neue Spalte als "Summe" erhalten, die bis zum vorherigen Monat addiert wird. Mittel, jetzt ist es August. Also, die Summe sollte bis Juli wie im ersten Eintrag in der Spalte "Summe" angezeigt werden.Jan t Februar t Mar t April t Mai t Juni t Juli t August t September t Oktober t November t Dezember t Summe

Jan| Feb| Mar| Apr| May| Jun |Jul |Aug |Sum  
21 | 28 | 26 | 31 | 54 | 67 |38 |29 |265    
11 | 44 | 66 | 7 | 88 | 54 |90 |74 |     
13 | 45 | 26 | 38 | 36 | 39 |67 |49 |    
76 | 35 | 67 | 23 | 76 | 54 |35 |59 |  
+0

Sie für eine dynamische Abfrage suchen sind? –

+0

Willkommen beim Stack Overflow :-) Was hast du bisher probiert? – JimHawkins

+0

Ja, dynamische Abfrage ist erforderlich. Die Abfrage sollte auch für nächstes Jahr funktionieren. Es sollte den Durchschnitt für ganze 12 Monate dieses Jahres am Januar des nächsten Jahres zeigen. Bitte schlagen Sie – Manish

Antwort

0
SELECT 
    Jan,Feb,Mar,Apr, and so on... 
    ,COALESCE(Jan,0) + COALESCE(Feb,0) + COALESCE(Mar,0) + COALESCE(Apr,0)..(till Dec) AS "Sum" 
FROM MyTable 

Wenn eine Zeile entrie ist der NULL-SUM NULL sein wird, dafür ist die COALESCE-Funktion, die ein NULL in NULL

2

Seit Monaten sind geschlossenen Satz rotiert, ziehe ich diese einfache Lösung :

SELECT *, 
    CASE WHEN DATEPART(MONTH, @date)<=1 THEN 0 ELSE Jan END + 
    CASE WHEN DATEPART(MONTH, @date)<=2 THEN 0 ELSE Feb END + 
    CASE WHEN DATEPART(MONTH, @date)<=3 THEN 0 ELSE Mar END + 
    CASE WHEN DATEPART(MONTH, @date)<=4 THEN 0 ELSE Apr END + 
    CASE WHEN DATEPART(MONTH, @date)<=5 THEN 0 ELSE May END + 
    CASE WHEN DATEPART(MONTH, @date)<=6 THEN 0 ELSE Jun END + 
    CASE WHEN DATEPART(MONTH, @date)<=7 THEN 0 ELSE Jul END + 
    CASE WHEN DATEPART(MONTH, @date)<=8 THEN 0 ELSE Aug END + 
    CASE WHEN DATEPART(MONTH, @date)<=9 THEN 0 ELSE Sep END Sum 
    --Append 3 more months to DECEMBER 
FROM Months 
+0

vor Aber die Abfrage sollte auch für nächstes Jahr funktionieren. Es sollte den Durchschnitt für ganze 12 Monate dieses Jahres am Januar des nächsten Jahres zeigen. Bitte vorschlagen – Manish

0
DECLARE @DATE date 
SET @date = GETDATE() 
SELECT LEFT(DATENAME(MM, @DATE), 3)