Transponieren Sie einen Satz von Zeilen als Spalten in SQL Server 2000
Besteht die Möglichkeit für die Umsetzung der Zeilen-Spalten in SQL Server (ist es möglich in MS-Access)?
Ich war verwirrt, weil diese Einrichtung ist in MS-Access, jedoch nicht in SQL Server. Ist es durch design, diese Funktion wurde nicht in SQL Server enthalten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beispiel http://jdixon.dotnetdevelopersjournal.com/pivot_table_data_in_sql_server_2000_and_2005.htm funktioniert nur, wenn Sie im Voraus wissen, was die einzelnen Werte werden können. Zum Beispiel, sagen wir, Sie haben ein Unternehmen mit benutzerdefinierte Attribute und benutzerdefinierte Attribute implementiert werden als Zeilen in einer untergeordneten Tabelle, wo die untergeordnete Tabelle ist im Grunde eine variable/Wert-Paaren, und jene variable/Wert-Paaren konfigurierbar sind.
Ich werde beschreiben, eine Technik, die funktioniert. Ich habe es verwendet. Ich bin NICHT der Förderung ist es, aber es funktioniert.
Pivot-Daten, wo Sie nicht wissen, was die Werte können im Voraus, erstellen Sie eine temporäre Tabelle on the fly mit keine Spalten. Dann verwenden Sie einen cursor, um eine Schleife durch die Zeilen, die Ausstellung einer dynamisch gebaut "alter table" für jede variable, so dass am Ende Ihre temp-Tabelle hat die Spalten, Farbe, Größe, Stadt.
Legen Sie dann eine Zeile in deine temp-Tabelle, aktualisieren Sie es über einen anderen cursor über die variable, Wert-Paaren, und wählen Sie dann, in der Regel verbunden mit der übergeordneten Entität, die in der Tat machen es scheinen, wie diejenigen, die benutzerdefinierte Variablen/Werte-Paare waren wie built-in-Spalten in der ursprüngliche übergeordnete Entität.
Den cursor beschriebene Methode ist wahrscheinlich die am wenigsten SQL-ähnliches zu verwenden. Wie bereits erwähnt, SQL 2005 und hat PIVOT, welches Super funktioniert. Aber für ältere Versionen und nicht-MS-SQL-Server, die Rozenshtein Methode von "Optimzing Transact-SQL" (edit: out-of-print, aber in Anspruch nehmen. von Amazon: http://www.amazon.com/Optimizing-Transact-SQL-Advanced-Programming-Techniques/dp/0964981203), ist hervorragend für Schwenk-und unpivoting Daten.
Es verwendet Punkt Eigenschaften zu verwandeln Zeile anhand der Daten in Spalten. Rozenshtein beschreibt mehrere Fälle, hier ein Beispiel:
Diese Methode ist viel effizienter als die Verwendung von case-Anweisungen und arbeitet für eine Vielzahl von Datentypen und SQL-Implementierungen (nicht nur MS-SQL).
Besten die Begrenzung auf kleine Skala für diese Art der Sache. Wenn Sie mithilfe von SQL 2k, obwohl, und nicht mit PIVOT-Funktionen verfügbar sind, habe ich entwarf eine gespeicherte Prozedur, die sollten die Arbeit für Sie erledigen. Bisschen ein Murks rush job, so ziehen Sie es auseinander, so viel, wie Sie möchten. Fügen Sie den unten in ein sql-Fenster und Bearbeiten Sie die EXEC-am unteren Rand bevorzugt. Wenn Sie möchten, um zu sehen, was da erzeugt wird, entfernen Sie die-s in der Mitte:
Für UNPIVOT in sql server 2005, die ich gefunden habe, einen guten Artikel
Spalten zu Zeilen-in-sql-server
Habe ich Daten in folgendem format
Survey_question_ID
E-Mail (Benutzer)
Antwort
1 Erhebung gibt es 13 Fragen und Antworten
die gewünschte Ausgabe, die ich wollte, war
Benutzer ---Survey_question_ID1---Survey_question_ID2
E-Mail---Antworten---Antwort ........also auf
Hier ist die Lösung für SQL-Server-2000, Führen Feld-Datentyp ist TEXT.