我正在使用 SQL Server
我有一個看起來像這樣的表 TT
TargetID RowID Actual
0001 1 0
0001 2 1
0001 3 1
0002 1 0
0002 2 1
0002 3 0
0003 1 1
0003 2 1
0003 3 0
我怎么能把它轉向這個
RowID Target0001 Target0002 Target0003
1 0 0 1
2 1 1 1
3 1 0 0
我試過
SELECT 'TargetID' TargetID, RowID, Actual
FROM TT
WHERE TargetID = '0001'
UNION ALL
SELECT 'TargetID' TargetID, RowID, Actual
FROM TT
WHERE TargetID = '0002'
SELECT 'TargetID' TargetID, RowID, Actual
FROM TT
WHERE TargetID = '0003'
但是有 3000 個 TargetID,我的方法并不適合
知道怎么做嗎?
uj5u.com熱心網友回復:
你可以試試這個...
DECLARE @ColumnsTable TABLE ([ColumnName] VARCHAR(50));
INSERT INTO @ColumnsTable ([ColumnName])
SELECT DISTINCT '[' CONVERT(VARCHAR(48), [TargetID]) ']'
FROM TT;
DECLARE @PivotColumns VARCHAR(MAX), @TotalColumn VARCHAR(MAX), @SQL VARCHAR(MAX);
SET @PivotColumns = (SELECT STUFF((SELECT DISTINCT ', ' CONVERT(VARCHAR(50), [ColumnName])
FROM @ColumnsTable
FOR XML PATH('')), 1, 2, ''));
SET @SQL = 'SELECT RowID,' @PivotColumns '
FROM (
SELECT RowID,TargetID,Actual
FROM TT) AS t
PIVOT (MAX([Actual])
FOR [TargetID] IN (' @PivotColumns ')) AS p';
EXEC(@SQL);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346119.html
標籤:sql sql-server 查询语句
