试一下select @sql = @sql +', sum(case when b='''+b+''' then 1 else 0 end)['+b+'] '
from A 
group by b set @sql = 'select a '+@sql+' from A group by a'exec(@sql)

解决方案 »

  1.   

    还是NULL
    这语句我没学过。所以不知道错在哪里刚才领导又摧我了,大家帮下把,急死我了实在不行我只好手写字段了估计150多遍日期,还有好机个要做
      

  2.   

    declare @sql nvarchar(1000)
    set @sql=''-----上面缺了
    select @sql = @sql +', sum(case when b='''+b+''' then 1 else 0 end)['+b+'] '
    from AB
    group by b set @sql = 'select a '+@sql+' from AB group by a'
    exec(@sql)
      

  3.   

    set @sql = 'select [fdsff]=a '
    select @sql = @sql +', sum(case when '''+b+''' then 1 else 0 end)['+b+'] 'from (select distinct B as b from A) tmpexec(@sql)
      

  4.   

    --创建临时表
    create table #
    (
      name varchar(20),
      date datetime
    )--插入测试数据
    insert #
    select 'a','2005-01-05' union all
    select 'a','2005-01-05' union all
    select 'b','2002-11-07' union all
    select 'a','2003-01-01' union all
    select 'b','2004-05-06' 
    --查询结果select name,count(*) num ,Date Date 
    into #tmp 
    from # group by Date,nameinsert #tmp
    select (case name when 'a' then 'b' else 'a' end),0 ,Date from #tmpselect * from #tmp order by Date--删除临时表
    drop table #
    drop table #tmp
      

  5.   

    结果:
    a 0 2002-11-07 00:00:00.000
    b 1 2002-11-07 00:00:00.000
    a 1 2003-01-01 00:00:00.000
    b 0 2003-01-01 00:00:00.000
    a 0 2004-05-06 00:00:00.000
    b 1 2004-05-06 00:00:00.000
    a 2 2005-01-05 00:00:00.000
    b 0 2005-01-05 00:00:00.000