--drop table test
create table test
( name varchar(12),
scores int
) insert into test
select '周杰倫',230
union
select '周星馳',100
union
select '成龍',150
union
select '李連杰',200
union
select '莉莉',260
select * from test
/* name scores
成龍 150
莉莉 260
李連杰 200
周杰倫 230
周星馳 100
*/ select 成龍,莉莉,李連杰,周杰倫,周星馳,劉德華
from test
pivot
(sum(scores) for name in (成龍,莉莉,李連杰,周杰倫,周星馳,劉德華) )as pvt
/* 成龍 莉莉 李連杰 周杰倫 周星馳 劉德華
150 260 200 230 100 null
*/ --drop table test1
---動態列
declare @col varchar(8000)
--獲取列
set @col = ''
select @col = @col + name + ','
from test
print left(@col, len(@col) - 1)
set @col = left(@col, len(@col) - 1)
/*成龍,莉莉,李連杰,周杰倫,周星馳
*/declare @sql varchar(8000)
set @sql = 'select ' + @col + '
from test
pivot
(sum(scores) for name in (' + @col + ') )as pvt
'exec (@sql)
動態行轉列
因狗血的報表展現需求 需要根據每天的新增使用者數量 選取前5個渠道.然後把該渠道當月每一天的新增使用者資料繪製在圖表上 x軸是 日期 y軸是新增使用者數量 畫5條線.這5條線是動態的,每天不同的線條.資料經過後台統計後形成表 statedate,channle id,channle name,new...
mysql 動態行轉列 MySQL行轉列
比如乙個單子,多個收據單用逗號隔開,怎麼把這乙個單子所有收據單獨展示出來,行轉成列呢?方法一 這裡需要用到迴圈,首先建立乙個1 10的序列 select rownum rownum 1 as seq from select rownum 0 r,bills limit 0,10 其次依次運用 sub...
動態的行轉列
declare sqlone varchar 800 sqltwo varchar 800 select sqlone isnull sqlone tgcname from dbo.ttask group by tgcname select sqlone sqlone select sqltwo s...