diesen Code Versuchen Sie, für die beste Lösung,
DECLARE @table TABLE(ID VARCHAR(50),value1 VARCHAR(50),value2 VARCHAR(50),value3 VARCHAR(50))
INSERT INTO @table (ID, value1, value2, value3)
SELECT 'A1',11,21,1
UNION
SELECT 'A2',12,22,2
UNION
SELECT 'A3',13,23,3
UNION
SELECT 'A4',14,24,4
SELECT Val, pvtCol INTO #table FROM(
SELECT *,col+'_'+CONVERT(VARCHAR(50),ROW_NUMBER() OVER(ORDER BY (SELECT 1))) pvtCol FROM
@table tbl
UNPIVOT
(val FOR col IN (ID,value1,value2))
unPvt
)x
DECLARE @PvtCol NVARCHAR(MAX) = STUFF((SELECT ',[' + pvtCol,']' FROM #table FOR XML PATH('')),1,1,'')
DECLARE @PvtColDisplay NVARCHAR(MAX) = STUFF((SELECT ',[' + pvtCol,'] AS [' + LEFT(pvtCol,CHARINDEX('_',pvtCol)-1),']' FROM #table FOR XML PATH('')),1,1,'')
EXEC ('SELECT '[email protected]+' FROM #table rdyPvt
PIVOT
(
MAX(Val) FOR pvtCol IN ('[email protected]l+')
) pvt')
DROP TABLE #table
Können Sie bitte hinzufügen Was hast du bisher versucht? –
Warum willst du das machen? Dieser Ansatz wird sehr schnell sehr hässlich, wenn sich die Anzahl der Zeilen erhöht. Wahrscheinlich besser, um es in Ihrer Präsentationsebene zu handhaben. –
Mögliches Duplikat von [Zeilen effizient in Spalten in SQL Server konvertieren] (https://stackoverflow.com/questions/15745042/efficiently-convert-rows-to-columns-in-sql-server) – Patrick