So entwerfen Sie Abfrage zum Erstellen dynamischer Spalten aus Zeilen

8

Ich habe Daten

Tabelle1

%Vor%

Tabelle2

%Vor%

Ich möchte Daten im folgenden Format zurückgeben:

%Vor%

Basierend auf der maximalen Anzahl von Spalten für ID möchte ich Spaltennamen erstellen und Zeilen in Spalten konvertieren. Ist dies mit einer SQL-Abfrage möglich?

    
rs. 15.09.2010, 18:45
quelle

3 Antworten

5

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.

    
Nope 15.09.2010 20:11
quelle
1

Diese Abfrage sollte helfen

%Vor%     
bobs 15.09.2010 19:11
quelle