動態行轉列

2022-04-01 23:21:22 字數 1165 閱讀 6465

--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...