select gds,convert(varchar(7),imonth,120) 月份,
sum(case djfl when '电价分类1' then dl else 0 end) 电价分类1,
sum(case djfl when '电价分类2' then dl else 0 end) 电价分类2,
...
from x
where convert(varchar(7),imonth,120)='2006-01' or convert(varchar(7),imonth,120)='2006-02'
group by gds,convert(varchar(7),imonth,120)相同的供电所不显示可以通过
DW设计界面
菜单->Rows->Suppress Repeating Values...
来搞定

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[P_test]
    @date1 varchar(7),
    @date2 varchar(7)
    AS
    BEGIN
    DECLARE @sql nvarchar(8000)
    SET @sql=''
    select @sql=@sql+',sum(case djfl when '''+电价分类+''' then dl else 0 end) '+电价分类 from x group by 电价分类
    set @sql='select gds,convert(varchar(7),imonth,120) 月份'+@sql+' from x where convert(varchar(7),imonth,120)='''
    set @sql=@sql+@date1+''' or convert(varchar(7),imonth,120)='''+@date2+''' group by gds,convert(varchar(7),imonth,120)'
    exec(@sql)
    end
    GO
    --调用 exec p_test '2006-01','2006-02'