[英]Rows into Columns in t-SQL?
我有一張這樣的桌子:
ID ColumnName
1 START_DTTM
1 END_DTTM
1 STATUS
2 START_DTTM
2 END_DTTM
2 status
3 START_DTTM
3 END_DTTM
3 status
3 Archive
我想要這樣的結果:
ID ColumnName ColumnName2 ColumnName3 ColumnName4
1 START_DTTM END_DTTM status NULL
2 START_DTTM END_DTTM status NULL
3 START_DTTM END_DTTM status Archive
任何幫助..提前感謝
這會產生想要的結果。 但是請注意, 沒有隱式排序順序 ! 沒有特定的ORDER BY
您可能會得到隨機結果。
declare @tbl TABLE(ID INT, ColumnName VARCHAR(100));
INSERT INTO @tbl VALUES
(1,'START_DTTM')
,(1,'END_DTTM')
,(1,'STATUS')
,(2,'START_DTTM')
,(2,'END_DTTM')
,(2,'status')
,(3,'START_DTTM')
,(3,'END_DTTM')
,(3,'status')
,(3,'Archive');
SELECT p.*
FROM
(
SELECT 'ColumnName' + CAST(ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS VARCHAR(10)) AS PivotColumn
,tbl.*
FROM @tbl AS tbl
) AS x
PIVOT
(
MIN(ColumnName) FOR PivotColumn IN(ColumnName1,ColumnName2,ColumnName3,ColumnName4)
) AS p
結果:
ID ColumnName1 ColumnName2 ColumnName3 ColumnName4
1 START_DTTM END_DTTM STATUS NULL
2 START_DTTM END_DTTM status NULL
3 START_DTTM END_DTTM status Archive
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.