SQL server: Erstellen Sie eine view oder Prozedur?

Zurzeit arbeite ich an einem Projekt mit SQL server-database darauf. Ich habe ein Problem mit einer Abfrage. Ich habe einen Tisch:

Aktuelle Tabelle:

Month | Year | EmpID | Salary ------------------------------------ 1 2016 123 100 2 2016 123 120 3 2016 123 110 4 2016 123 150 1 2016 456 200 2 2016 456 210 3 2016 456 225 4 2016 456 220 

Und ich möchte etwas mit dem Ergebnis wie dieses schaffen:

Nach Abfrage-Tabelle:

 EmpID | Salary1 | Salary2 | Salary3 | Salary4 123 100 120 110 150 456 200 210 225 220 

Anmerkung: Benennen der Gehaltstabelle auf der Grundlage der Monats-Tabelle, so wird es Salary12 geben

Welche Frage soll ich eingeben? Soll ich hier eine view oder eine gespeicherte Prozedur erstellen?

Ihre Entscheidungen sind eine view, gespeicherte Prozedur oder gespeicherte function. Ich sehe keinen Grund, eine gespeicherte Prozedur zu verwenden – ich denke, ein Ergebnissatz ist viel nützlicher, wenn man es in einer anderen Abfrage verwenden kann.

Sie können entweder pivot oder bedingte Aggregation für das Ergebnis verwenden. Als Aussicht:

 create view v_current as select c.empid, max(casewhen c.month = 1 then salary end) as salary_01, max(casewhen c.month = 2 then salary end) as salary_02, . . . max(casewhen c.month = 12 then salary end) as salary_12 from current c where c.year = year(getdate()) group by c.empid; 

Hinweis: month und year sind Schlüsselwörter in SQL server, also sind sie sehr schlechte Entscheidungen für Spaltennamen. Sie sollten einen anderen Namen für diese Spalten finden.