首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

大家帮小弟我来看看,要快,好像今天有专家坐诊

2013-12-19 
大家帮我来看看,要快,好像今天有专家坐诊channelnochannelnamemediatypeadcountmediatypecount320000107电

大家帮我来看看,要快,好像今天有专家坐诊
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

热点排行