SQL - Daten aus mehreren Zeilen in eine einzige Zeile
Ich habe eine Tabelle, die sieht ähnlich aus wie diese hier:
SetId AppCode AppEventId EventId FieldId ValueData
2012/2013 1000 361616 16 1 UNI
2012/2013 1000 361616 16 2 Isolation
2012/2013 1000 361616 16 3 DN
2012/2013 1050 378194 16 1 BUL
2012/2013 1050 378194 16 2 Isolation
2012/2013 1050 378194 16 3 RD
Ich würde gerne in der Lage zu kombinieren, dass die Daten, wenn Sie die gleiche AppCode.
Das würde dann so Aussehen:
SetId AppCode AppEventId EventId ValueData1 ValueData2 ValueData3
2012/2013 1000 361616 16 UNI Isolation DN
2012/2013 1050 378194 16 BUL Isolation RD
- PIVOT Ist die Antwort. Zeigen Sie uns, was haben Sie Versucht.
- Hi, ich glaube deine Tabelle nicht Folgen normalisierungsregeln. Sie sollten überdenken Sie Ihre Tabellenstruktur ersten.
- Danke Herzchen, ich werde sehen, was sich PIVOT.
- Allan - ich kann leider nicht ändern, die Struktur der Tabelle.
- sind es nur 3 fieldId ist? oder geht das auch haben, um flexibel zu sein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
Diese kann getan werden, indem die PIVOT Funktion, die zur Verfügung gestellt wurde, beginnend in SQL Server 2005.
Wenn Sie einen bekannten oder legen Sie die Anzahl der Werte, die Sie verändern wollen, in Spalten, dann ou können schwer-code der Abfrage:
Sehen SQL Fiddle mit Demo.
Aber wenn Sie haben eine unbekannte Anzahl von Werten, dann müssen Sie dynamisches SQL verwenden:
Sehen SQL Fiddle mit Demo. Beide Abfragen das gleiche Ergebnis:
UPDATE:
Verbessern Antwort -
Nicht elegant, aber es funktioniert -