Ich habe eine Tabelle mit dem Namen "Table2" erstellt, die die Daten enthält, die Sie oben unter der Überschrift Ihrer Tabelle 2 angegeben haben.
Hier ist die SQL, die ich in SQL Server 2008 verwendet habe.
%Vor%Das obige SQL wird dazu führen:
%Vor% Der Grund, warum Sie NULL
-Werte nicht sehen, ist der ELSE
in jeder CASE
-Anweisung.
Wenn Sie lieber NULL
-Werte haben, entfernen Sie einfach die ELSE 0
und ELSE ''
wie erforderlich.
Ich weiß zu diesem Zeitpunkt nicht, ob es möglich ist, dies generisch zu machen, zB: eine unbekannte Menge an eindeutigen FIDs zu verarbeiten, da dies auch bedeuten würde, generisch die Spaltennamen (Yr1, al1, Yr2, etc ..) zu generieren .
Sie könnten dies wahrscheinlich mit dynamischem SQL erreichen, aber da ich kein großer Fan von dynamischem SQL bin, würde ich versuchen, einen anderen Weg zu finden, damit umzugehen.
- Bearbeiten (Zusätzlicher Pivot-Ansatz für Vollständigkeit) -
Ich habe mir den Link angesehen, den Joe Stefanelli gepostet hat, und ich habe das untenstehende SQL für Ihre Anforderung hinzugefügt. Obwohl ich die Idee von dynamischem SQL nicht mag, konnte ich in dieser spezifischen Instanz keinen anderen Weg finden.
%Vor%Dies führt zu folgendem:
%Vor%Je nachdem, welches Format und welche Vorgehensweise Ihnen am besten gefällt, haben Sie zumindest Ihre Optionen ausgekleidet.
Tags und Links sql sql-server sql-server-2005 sql-server-2008 tsql