大家帮我来看看,要快,好像今天有专家坐诊
channelnochannelnamemediatypeadcountmediatypecount
320000107电视111143030
520000106电视211073030
420000107电视311043030
420000105电视41993030
430000014报纸1234884
370000017报纸2228884
510000019报纸3227884
120000011报纸4226884
370000107广播10146607
370000101广播2067607
150000107广播3056607
610000101广播4039607
现通过分组把数据汇总到这种程度,问题是我要通过mediatypecount把mediatype排序,通过adcount把channelname排序,然后列转行
得到这种效果
[解决办法]
select mediatype,
channelno=min(case when no=1 then channelno end),
channelname=min(case when no=1 then channelname end),
channelno=min(case when no=2 then channelno end),
channelname=min(case when no=2 then channelname end),
channelno=min(case when no=3 then channelno end),
channelname=min(case when no=3 then channelname end),
channelno=min(case when no=4 then channelno end),
channelname=min(case when no=4 then channelname end)
from (select *, no=row_number() over(parttion by mediatype order by channelname) from tb) a group by mediatype order by min(mediatypecount)
[解决办法]
select *, no=(select count(*) from tb where mediatype=a.mediatype and channelname<=a.channelname) into #tb
from tb a
select mediatype,
channelno=min(case when no=1 then channelno end),
channelname=min(case when no=1 then channelname end),
channelno=min(case when no=2 then channelno end),
channelname=min(case when no=2 then channelname end),
channelno=min(case when no=3 then channelno end),
channelname=min(case when no=3 then channelname end),
channelno=min(case when no=4 then channelno end),
channelname=min(case when no=4 then channelname end)
from #tb group by mediatype order by min(mediatypecount)
drop table #tb