簡體   English   中英

如何選擇SQL Server行值作為列(Dynamic Pivot)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM