Ich habe die folgenden Tabellendatum:Wie erstellt man Spalten aus Zeilen in SQL Server mit dynamischem SQL oder Pivot?
name | serviceName | contractNo | materialNo
--------------------------------------------
item1 managed foo 123456 A6Ax33444
item1 managed bar 534454 A6A3222x7
Und das ist das Ergebnis, das ich brauche:
name | serviceName1 | contractNo1 | materialNo1 | serviceName2 | contractNo2 | materialNo2
item1 managed foo 123456 A6Ax33444 managed bar 534454 A6A3222x7
Dieses Beispiel enthält nur zwei Service-Namen, aber es kann null bis etwa 10 verschiedene Dienstleistungen.
Ich habe versucht, mehrere Dinge mit Pivoting und dynamische SQL-Abfragen wie diese SQL Server: Examples of PIVOTing String data oder Combine multiple rows into multiple columns dynamically in SQL Server, aber es kann nicht funktionieren.
Die realen Daten werden mit mehreren Joins abgefragt, 'name' kommt aus einer Tabelle, 'serviceName', 'contractNo' und 'materialNo' werden aus einem anderen zusammengefügt und es gibt viel mehr Spalten, aber der Inhalt ist das Gleiche.
Vielen Dank für Ihre Hilfe!
Es sollte kein Problem sein, in es über dynamische SQL zu tun: Erstens eine Variable deklarieren, die die Gesamtzahl eines Grafen (distinct) und thenrepeat von 0 bis Var nimmt und einen String concat ... aber die Frage ist: Wie wollen Sie später mit der Tabelle umgehen? Wie Sie bereits erwähnt haben, ist es möglich, 0 bis 10 Spalten zu haben ... vielleicht erstellen Sie jetzt eine Tabelle mit maximal 10 Spalten ... morgen erhalten Sie eine 11. Zeile - und jetzt? Und außerdem: Auch wenn Sie es nicht in einer Tabelle speichern, sondern nur in einer Art von Reporting anzeigen: Wie groß ist die Zeile? Warum es nicht in irgendeiner Form von Tabelle/Baum anzeigen – Tyron78
@Rene: Danke für Ihren Kommentar. Das ganze Zeug wird in einer gespeicherten Prozedur verwendet, die von EF6 aufgerufen und dann in einem ASPxGrid (devexpress) angezeigt wird. – Jan