1、原表test結構如下:
2、我們想要得到的結果爲:
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)