假設你正在使用SQL Server,你可以實現PIVOT功能的數據行轉換成列。基本語法爲:
select *
from
(
select description, balance
from yourtable
) d
pivot
(
sum(balance)
for description in ([desc1], desc2]) -- replace this with the names of your descriptions
) piv;
當然,如果你有數目不詳的描述值,那麼你就需要使用動態SQL:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(description)
from yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + '
from
(
select description, balance
from yourtable
) x
pivot
(
sum(balance)
for description in (' + @cols + ')
) p '
execute sp_executesql @query
親愛的約翰:請告訴,這RDBMS是你使用?每個供應商都傾向於將他們的實施方案應用到您的方案中。 – Ryan
請通過添加適當的標籤(Oracle,SQL Server,MySQL等)來指定您要定位的RDBMS。可能會有利用不被普遍支持的語言或產品功能的答案。此外,通過爲特定的RDBMS添加標籤,您的問題可能會得到更適合回答的人的關注。 – Taryn