Ich habe eine Tabelle mit einer Spalte für die Fall-ID, Aktion und Grund. Eine einzelne Fall-ID kann mehrere Zeilen mit verschiedenen Aktionen und Codes enthalten. Ich kann pivotieren und mehrere Zeilen mit den Spalten action1, action2, action3 usw. erhalten, aber für das Leben von mir kann case id, action1, reason1, action2, reason2 usw. in einer einzigen Zeile nicht erhalten werden.SQL Server mehrere Zeilen und zwei Spalten in einzelne Zeile mit mehreren Spalten
0
A
Antwort
0
Wenn Sie ein wenig mehr Dynamik gehen (n Gründe)
Drop Table #Temp
Declare @YourTable table (ID int,Action varchar(50),Reason varchar(50))
Insert Into @YourTable values
(1,'Load Data','Boss said to'),
(1,'Run Query','It is what I do'),
(2,'Take Garbage Out','Wife makes me')
-- Convert Data to EAV Structure'ish
Declare @XML xml = (Select *,GrpSeq = Row_Number() over (Partition By ID Order By (Select NULL)) from @YourTable for XML RAW)
Select ID = r.value('@ID','int')
,ColSeq = Row_Number() over (Partition By r.value('@ID','int') Order By (Select NULL))
,Element = attr.value('local-name(.)','varchar(100)')+r.value('@GrpSeq','varchar(10)')
,Value = attr.value('.','varchar(max)')
Into #Temp
From @XML.nodes('/row') as A(r)
Cross Apply A.r.nodes('./@*') AS B(attr)
Where attr.value('local-name(.)','varchar(100)') not in ('ID','GrpSeq')
-- Get Cols in correct Order
Declare @Cols varchar(max)
Set @Cols = Stuff((Select ',' + QuoteName(Element)
From (Select Distinct Top 100 Percent ColSeq,Element From #Temp Order By ColSeq) A
For XML Path(''), Type
).value('.', 'varchar(max)'),1,1,'')
-- Execute Dynamic Pivot
Declare @SQL varchar(max) = '
Select *
From (Select ID,Element,Value From #Temp) T
Pivot (
max(Value)
For [Element] in (' + @Cols + ')
) P '
Exec(@SQL)
Returns
Verwandte Themen
- 1. Einzelne Zeile in Zeilen und Spalten umwandeln
- 2. SQL Server einzelne Zeile mehrere Spalten in einer Spalte
- 3. konvertieren Zeilen in Spalten in mehreren Zeilen in SQL Server
- 4. SQL Server-Zeilen in Spalten, Zeilen begrenzen,
- 5. SQL Server: Spalten in Zeilen
- 6. SQL Server groupby zwei Spalten
- 7. In SqlServer, wie eine einzelne Spalte aus mehreren Zeilen in einer einzigen Zeile mit mehreren Spalten
- 8. Transpose Zeilen in Spalten SQL Server 2014
- 9. MSSQL transponieren mehrere Zeilen in eine Zeile mit Spalten
- 10. SQL Server Summe mehrere Spalten und Gruppe
- 11. SQL Server, Zeilen in Spalten mit Zeilen über Partition
- 12. Concat mehrere Spalten aus mehreren Zeilen
- 13. SQL Server: Zeilen in Spalten transponieren
- 14. SQL Zeilen 2 Spalten
- 15. Konvertieren Sie zwei Spalten in 5 Zeilen in SQL-Server
- 16. SQL Server: Reihenfolge Spalten in einer Zeile
- 17. Split-String in mehrere Zeilen mit mehreren Spalten in gepaart
- 18. In SQL Server, wie Zeilen für zwei Spalten verschieben
- 19. Trans Zeilen in Spalten
- 20. Transponieren Zeilen in Spalten in SQL Server
- 21. SQL Server konvertieren Spalten in Zeilen
- 22. SQL Update mehrere Zeilen und Spalten mit Subselect-Abfrage
- 23. SQL Server: wie Zeilen drehen in Spalten
- 24. QTableView Format einzelne Zeile und Spalten
- 25. SQL Server Zeilen aus der Tabelle und Anzeige in Spalten
- 26. Wählen Sie mehrere Zeilen zu Spalten in SQL Server
- 27. SQL-Server: Zeilen in Spalten konvertieren
- 28. SQL: Konvertieren Sie mehrere Spalten in Zeilen
- 29. Zeilen in Spalten sql
- 30. Mehrere Zeilen in eine einzelne Zeile zusammenführen (SQL)
Mögliche doppelte: https://stackoverflow.com/questions/2170058/can- sql-server-pivot-without-knowing-die resultierenden Spaltennamen – openshac