[英]How to select SQL Server row values as columns (Dynamic Pivot)
我有一張桌子,我們從不同的傳感器收集狀態數據。 為了進行報告,我需要將每個傳感器(SGUID)的信息分組為一行。 每個傳感器都在發送讀取器(RGUID)和讀取器的值(VAL)。
來源表:
目標結果:
我聽說過Pivot,但不知道如何在這種情況下使用它們。
您需要使用一些動態T-SQL的動態樞軸:
CREATE TABLE #VALS (
VALS NVARCHAR(4000)
)
INSERT INTO #VALS
SELECT DISTINCT RGUID
FROM [TABLE]
DECLARE @SQL NVARCHAR(MAX)
DECLARE @VALS NVARCHAR(4000)
SELECT @VALS = COALESCE(@VALS+', ','') + '[' + VALS + ']' FROM #VALS
SET @SQL = '
SELECT SGUID, '+@VALS+'
FROM [TABLE]
PIVOT(MAX(VAL) FOR RGUID IN ('+@VALS+')) PIV'
PRINT @SQL
EXEC (@SQL)
PRINT
將向您顯示構造的查詢。 從那里您可以非常簡單地調試任何問題。 這個想法很簡單,我在這里創建了一個工作提琴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.