So konvertieren Sie mehrere Zeile mit Daten in Spalte Daten in sql server
Habe ich folgende Ergebnis meiner sql-Abfrage:
Id atr1 atr2 atr3 atr4
1 a bsdf csdfs djk
5 esdds f gds hkkj
8 i j ksd lk
9 ads sdf dfse wer
Nun brauche ich das obige Ergebnis in folgendem format:
S.no 1 2 3 4
Id 1 5 8 9
atr1 a esdds i ads
atr2 bsdf f j sdf
atr3 csdfs gds ksd dfse
atr4 djk hkkj lk wer
Ich bin nicht in der Lage, es zu tun mit Pivot und Unpivot.
So viele ähnliche Beiträge auf SO .... check stackoverflow.com/questions/15745042/...
die Suche nach SQL-Server-Pivot liefert 1758 Antworten schon vorhanden, SO haben Sie einen Blick auf die ersten ...
Ich habe keine fixen nicht. der Zeilen.
die Suche nach SQL-Server-Pivot liefert 1758 Antworten schon vorhanden, SO haben Sie einen Blick auf die ersten ...
Ich habe keine fixen nicht. der Zeilen.
InformationsquelleAutor Dusht | 2013-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um das endgültige Ergebnis, das Sie wollen, werden Sie wollen, um unpivot Ihre aktuelle Spalten und dann die pivot-Funktion. Aber bevor Sie unpivot/pivot-Ihre Daten, ich würde vorschlagen, mit
row_number()
zum generieren eines eindeutigen Wert für jede Zeile.Gibt es ein paar verschiedene Möglichkeiten, um das Ergebnis zu erhalten, einschließlich der Verwendung einer Aggregatfunktion mit CASE-Ausdruck, statische PIVOT und dynamische PIVOT.
Aggregat mit GEHÄUSE: erhalten Sie das Ergebnis, indem Sie zunächst mit einer UNION ALL-Abfrage konvertieren Sie mehrere Spalten in die Zeilen und verwenden Sie dann eine Aggregatfunktion mit einem CASE-Ausdruck:
Sehen SQL Fiddle mit Demo
Statische UNPIVOT/PIVOT:, Wenn Sie haben eine begrenzte Anzahl von Werten, die Sie transformieren möchten, dann Sie können schwer-code der Abfrage. Der Prozess der unpivot wird konvertieren Sie Ihre mehrere Spalten
id
,atr1
,atr2
,atr3
, undatr4
und konvertieren Sie Sie in mehrere Zeilen. Sie hat nicht angegeben, welche version von SQL Server, die Sie verwenden werden, aber dies kann durchgeführt werden, indem dieUNPIVOT
Funktion oder mitCROSS APPLY
.Sehen SQL Fiddle mit Demo. Ich verwendete CROSS-BEWERBEN Sie sich mit einer GEWERKSCHAFT auf ALLE auswählen, um jede Ihrer Spalten und konvertieren Sie Sie in mehrere Zeilen. Diese Abfrage erhalten Sie Ihre Daten in das folgende format:
Sobald Sie die Daten in mehreren Zeilen, dann können Sie die PIVOT-Funktion:
Sehen SQL Fiddle mit Demo.
Dynamische UNPIVOT/PIVOT: Der oben funktioniert großartig, wenn Sie eine bekannte oder eine begrenzte Anzahl von neuen Spalten, die Sie erstellen wollen, aber wenn Sie haben eine unbekannte Anzahl von Werten zu konvertieren in Spalten, dann werden Sie wollen, um die Verwendung von dynamischem SQL. Dies generiert ein sql-string, der dann ausgeführt werden, erhalten Sie das endgültige Ergebnis:
Sehen SQL Fiddle mit Demo. Alle Versionen wird ein Ergebnis geben:
InformationsquelleAutor Taryn