數據庫類似行列轉換SQL

1、原表test結構如下:

wKiom1SRCDyj_Is1AABlHsTZB-k835.jpg


2、我們想要得到的結果爲:

wKiom1SRCIjyYmdnAABBtb-3S3Q100.jpg


3、第一種方法:靜態方法,即列固定

SQL如下:

select * from 
(
SELECT date,name,sum(num) num FROM test  GROUP BY date,name
) t
pivot ( sum(num) for t.name in ([alan],[andy],[baicl])) as a


4、第二種方法:動態方法,即列爲通過SQL查詢獲取

SQL如下:

declare @sql nvarchar(4000)

select @sql=isnull(@sql+',','')+t.name

from (select distinct quotename(name) as name from test) t

set @sql='select * from (SELECT date,name,sum(num) num FROM test  GROUP BY date,name) t pivot ( sum(num) for t.name in ('+@sql+')) as a'

exec(@sql)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章