這是我經常選擇查詢:到行列轉換SQL查詢的正確方法
SELECT [category], [price], [company]
FROM [prices]
INNER JOIN [company] AS [co] ON [co].[company] = [pr].[company]
WHERE [co].[id] IN (1,2,3);
結果是:
category | price | company
---------+-------+-------------
Srv | 1200 | CoA
Srv | 2800 | CoB
EQ | 5400 | CoA
Deduc | 400 | CoA
Deduc | 150 | CoB
我需要這樣的結果:
PriceASrv | PriceBSrv | PriceAEQ | PriceBEQ | PriceADeduc | PriceBDeduc
-----------+-----------+----------+----------+-------------+-------------
1200 | 2800 | 5400 | NULL | 400 | 150
看來我需要兩次PIVOT,對嗎?有人有什麼主意嗎?
你有列固定數量的還是動態的? –
您不需要兩次旋轉,但正如您在下面的示例中看到的,您需要連接「公司」和「類別」值。當結果缺失時,它看起來像是需要所有的「類別」和「公司」。你有'公司'表,'公司'和'類別'表有一行,每個類別有一行? – Beth
SQL語言**實際**需要能夠知道在編譯時有多少列和什麼類型,在查詢實際上在任何data_上執行之前。如果你不能做到這一點,你需要通過動態sql(第一步確定「多少列」問題的答案)或者在客戶端代碼中進行調整,分兩步進行。 –