2016-12-16 1 views
-3

betrachten eine Tabelleberechnen Summe aller Löhne aller Mitarbeiter Basierend auf Zuletzt aktualisiert Sequenznummer

employee id report_year report_quarter sequencenumber quarter1_wage quarter2_wage 
101    2015  1    1    1000   0 
101    2015  1    2    2000   0 
102    2016  2    1    3000   0 
102    2016  2    2    0   4000 

Das Ergebnis der Abfrage

 Total wages 

     6000 

Wie im Jahr 2015 Mitarbeiter-ID 101 mit höchster Sequenznummer sein muss 2 hat 2000 kommt unter viertel1 als Bericht _quarter zeigt an es ist 1 muss hinzufügen nehmen diesen Wert und fügen Sie die

2016 Mitarbeiter ID 102 mit höchster Sequenz Nummer 2 hat 4000 (qu arter2_wage) als Bericht _quarter anzeigt, ist es 2

+1

„Hint“ Abgeleitet ?? Ist das eine Art Prüfungsfrage oder Hausaufgabe? –

Antwort

0
SELECT SUM(quarter1_wage)+SUM(quarter2_wage) AS total 
,MAX(sequencenumber) 
,report_year 
FROM table 
GROUP BY report_year 
+0

Könnten Sie bitte einige Erklärungen hinzufügen, damit das OP tatsächlich versteht, was hier passiert? – MadOX

+0

Muss nur das angegebene Viertel mit der höchsten Sequenznummer auswählen –

0

Verwendung mit Krawatten und Sortieren nach bekommen nur die höchsten Sequenznummern von EmployeeId und dann Summe, die Tabelle

Select SUM(quarter1_wage)+SUM(quarter2_wage) AS total from (
    Select Top 1 with Ties * from table 
     ORDER BY row_number() over (partition by employee_id order by sequencenumber desc)) as DerivedTable