2017-06-28 11 views
-1

Ich habe eine Tabelle mit col1, col2, Jahr. Ich möchte eine Abfrage erstellen, wie:SQL hinzufügen SUM von Jahr bis zum nächsten Jahr

SELECT 
SUM(col1-col2) 
FROM table1 
WHERE year = '2015' 

und Abfrageergebnis auf neue Spalte ‚col3‘ für das Jahr = 2016 wäre nächste (für 2017):

SELECT 
SUM(col1-col2) 
FROM table1 
WHERE year = '2015' AND year = '2016' 

, gestoppt, wenn Jahr ist max.

+1

Was meinen Sie „neue Spalte col3“ haben? Wie sieht dein gewünschtes Ergebnis aus? –

Antwort

0

Dies ist ein einfacher group by Fall.

select year, sum(col1-col2) as col3 
from table1 
group by year 

Wenn Sie wollten dies auf bestimmte Jahre begrenzen Sie eine where Klausel verwenden können, aber man wollte (hat eine Reihe nicht Jahr = 2015 und Jahr = 2016) eine or keine and

select year, sum(col1-col2) as col3 
from table1 
where year='2015' or year = '2016' 
group by year 
+0

Dynamisch? Ich möchte mein Ergebnis auf nächstes Jahr usw. einstellen. –

+0

@DejmienF Ich habe keine Ahnung, was dieser Kommentar im Zusammenhang mit dieser Antwort bedeutet – Jamiec

-2

Dynamisch? Ich möchte mein Ergebnis auf nächstes Jahr, etc., setzen

+1

Dies ist keine Antwort. Die Antwortbox dient lediglich dazu, Antworten zu geben. Wenn Sie Ihre Frage bearbeiten möchten, benutzen Sie den 'edit' Link. – Jamiec

0

Volle Offenlegung Ich werde es mit GROUP-Klausel tun, ist die Art, wie mein Verstand funktioniert ... aber hier, wenn sie Sie auf dem Interview als auch Sie fragen können Mache es ohne GROUP CLAUSE?

als auch die meiste Zeit es Datetime-Spalte ist, sollten Sie YEAR Funktion

select distinct YEAR(datecolumn) as 'year', sum(col1-col2) OVER() as col3 
from table1 

select distinct YEAR(datecolumn) as 'year', sum(col1-col2) OVER() as col3 
from table1 
where YEAR(datecolumn) in ('2015', '2016') 
Verwandte Themen