Das design von Abfragen für die Erstellung von dynamischen Spalten aus den Zeilen
Ich habe Daten
Tabelle1
ID Name
-----------
1 n1
2 n2
3 n4
Tabelle2
FID YearS Val
----------------------
1 2008 Up
1 2009 Down
1 2010 Up
2 2000 Up
2 2001 Down
2 2002 Up
2 2003 Up
3 2009 Down
3 2010 Up
Möchte ich, um die Daten in folgenden format:
ID Yr1 Val1 Yr2 Val2 Yr3 Val3 Yr4 Val4
--------------------------------------------------------
1 2008 Up 2009 Down 2010 Up NULL Null
2 2000 Up 2001 Down 2002 Up 2003 Up
3 2009 Down 2010 Up NULL NULL NULL Null
Basierend auf der maximalen Anzahl von Spalten für die ID, die ich erstellen möchten Spaltennamen und dann umwandeln von Zeilen in Spalten. Ist dies möglich mit einer sql-Abfrage?
- Verwenden Sie den Berichts-generator, um Berichte zu erstellen!
- gibt es einen Grund, warum Sie über zwei Spalten pro Jahr anstatt der Jahre der name der Spalte? so werden sich alle von Ihren Jahren gruppiert sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich eine Tabelle "Tabelle2", mit den Daten, die Sie gezeigt haben oben unter deinem Tisch 2 überschrift.
Hier ist die SQL, die ich verwendet, die in SQL Server 2008.
Den oben genannten SQL wird zu diesem Ergebnis führen:
Den Grund, warum Sie nicht sehen
NULL
Werte ist wegen derELSE
in jedemCASE
- Anweisung.Wenn Sie lieber
NULL
Werte, entfernen Sie einfach dieELSE 0
undELSE ''
als erforderlich.Weiß ich nicht, in dieser Zeit, wenn es möglich ist, um diese generische, z.B.: Prozess-eine unbekannte Menge von verschiedenen FIDs, als würde dies auch bedeuten, dass die Generierung der Spalten-Namen (Yr1, al1, Yr2,etc..) generisch.
Könnte man wohl erreichen, das mit dynamischen SQL, aber wie ich nicht bin ein großer fan von dynamischen SQL würde ich versuchen und schauen in die andere Weise des Umgangs mit diesem.
-- Edit (Hinzugefügt pivot-Ansatz für Vollständigkeit)--
Sah ich unter dem link von Joe Stefanelli gepostet und ich habe den SQL unten für Ihre Anforderung. Obwohl ich nicht wie die Idee der dynamischen SQL-ich war nicht in der Lage zu finden einen anderen Weg, in diesem speziellen Fall.
Dadurch wird das folgende:
Je nachdem, in welchem format und Konzept, die Sie am besten gefällt, zumindest haben Sie Ihre Möglichkeiten zeigte.
Finden Sie unter: Mit SQL Server 2005/2008-Pivot auf Unbekannte Anzahl von Spalten
Diese Abfrage sollte helfen