簡體   English   中英

TSQL動態數據透視

[英]TSQL Dynamic Pivot

我對PIVOT SQL腳本有一個“小”問題。 我目前的解決方案基於Dynamic PIVOT的類似問題。

我已經設法編寫了PIVOT腳本,並且基本上可以。 但是,我的情況是這樣,腳本不會將唯一的條目放到單行中,而是輸出如下內容

ListingEntryId   Address        Employees   Location
1                NULL           NULL        Nottingham
1                Canal Street   NULL        NULL
1                NULL           3           NULL
2                NULL           NULL        London
2                Camden         NULL        NULL
2                NULL           12          NULL

而我正在尋找的結果應該看起來像這樣

ListingEntryId   Address        Employees   Location
1                Canal Street   3           Nottingham
2                Camden         12          London

這是劇本

DECLARE @listingId INT = 1;
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)

SELECT LEV.ListingColumnId, LEV.ListingEntryId, LE.CreatedBy, LEV.EntryValue, LD.ColumnTitle, LD.[Index]
INTO #ListingTable
FROM ListingEntryValue LEV LEFT OUTER JOIN 
ListingEntry LE ON LEV.ListingEntryId=LE.Id
LEFT OUTER JOIN 
ListingDefinition LD ON LEV.ListingColumnId = LD.Id
WHERE LE.ListingId = @listingId;

SELECT * FROM #ListingTable;

SELECT @cols = STUFF((SELECT DISTINCT TOP 100 PERCENT ',' + QUOTENAME(LT.ColumnTitle) FROM #ListingTable LT
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1,1,'')
SELECT @cols;

SET @query = 'SELECT ListingEntryId,' + @cols + ' FROM (SELECT ListingEntryId, ListingColumnId, EntryValue, ColumnTitle, [Index] FROM #ListingTable LT) x
PIVOT (MAX(EntryValue) FOR ColumnTitle IN (' + @cols + ')
) p'

PRINT @query
EXECUTE(@query);


DROP TABLE #ListingTable

我將感謝一些可以幫助我解決這些問題的指針。 我在這里做了一個小提琴 ,由於某種奇怪的原因,它沒有輸出任何東西,但是所有用於生成模式的代碼都在那里

將PIVOT中的字段限制為僅必需的元素(X,Y,值)

SET @query = 'SELECT ListingEntryId,' + @cols + ' FROM (SELECT ListingEntryId, EntryValue, ColumnTitle FROM #ListingTable LT) x
PIVOT (MAX(EntryValue) FOR ColumnTitle IN (' + @cols + ')
) p'

返回

ListingEntryId  Address         Employees   Location
1               Canal Street    3           Nottingham
2               Camden          12          London

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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