我想要这样的结果!在动态的行转列当中2007-12 0 0 2000 2000
2007-11 2000 4000 2000 0
2007-10 2000 2000 2000 2000
2007 4000 6000 6000 4000
/*动态方法*/
declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+'['+类别+']=sum(case 类别 when '''+类别+''' then 数量 else 0 end)' from T group by 类别
exec ('select 时间=convert(varchar(7),时间,120),'+@sql+' from T group by convert(varchar(7),时间,120)')
用那个关键字或是方法把上面的语句和下面的语句连起来啊
比如用 NUION 或是NUION All等方法!
select @sql=isnull(@sql+',','')+'['+类别+']=sum(case 类别 when '''+类别+''' then 数量 else 0 end)' from T group by 类别
exec ('select 时间=convert(varchar(4),时间,120),'+@sql+' from T group by convert(varchar(4),时间,120)')非常感谢大家帮忙解决!

解决方案 »

  1.   

    declare @sql varchar(8000)select @sql=isnull(@sql+',','')+'['+类别+']=sum(case 类别 when'''+类别+''' then 数量 else 0 end)' from T group by 类别set @sql='select 时间=convert(varchar(7),时间,120),'+@sql+' from T group by convert(varchar(7),时间,120)
    union all
    select 时间=convert(varchar(4),时间,120)'select @sql=@sql+',['+类别+']=sum(case 类别 when'''+类别+''' then 数量 else 0 end)' from T group by 类别set @sql=@sql+' from T group by convert(varchar(4),时间,120)'exec (@sql)
      

  2.   

    declare @sql varchar(8000)select @sql=isnull(@sql+',','')+'['+类别+']=sum(case 类别 when'''+类别+''' then 数量 else 0 end)' from T group by 类别set @sql='select 时间=convert(varchar(7),时间,120),'+@sql+' from T group by convert(varchar(7),时间,120)
    union all
    select 时间=convert(varchar(4),时间,120),'+@sql+' from T group by convert(varchar(4),时间,120)'/*
    除了 group by 字段不同,其它都一样的,以下语句没必要了,刚才考虑不周
    */--select @sql=@sql+',['+类别+']=sum(case 类别 when'''+类别+''' then 数量 else 0 end)' from T group by 类别
    --set @sql=@sql+' from T group by convert(varchar(4),时间,120)'exec (@sql)