declare @sql varchar(8000)
set @sql = 'select '
select @sql = @sql + 'sum(case a1 when '''+a1+''' 
                          then 1 else 0 end) 数量'+a1+','
  from (select distinct a1 from 表) as aselect @sql = left(@sql,len(@sql)-1) + ' from 表 'exec(@sql)

解决方案 »

  1.   

    create table #a (a varchar(20),b int)
    insert into #a values ('张三',2)
    insert into #a values ('李四',3)declare @sql varchar(8000)
    set @sql=''
    select @sql = @sql + 'sum(case when convert(varchar,a)='''+ convert(varchar,a) +''' then b else 0 end ) ['+ cast(a as varchar(100))+'],'
     from  (select distinct a from #a ) aa
    set @sql = left(@sql,len(@sql)-1)
    exec('select '+ @sql + ' from #a  group by a')drop table #a
      

  2.   

    能不能用用一句SQL查询出结果?
      

  3.   

    select 
      sum (case a1 when '张三' then 1 else 0 end) '张三' 
      sum (case a1 when '李四' then 1 else 0 end) '李四'  
    from tableaa group by a1
      

  4.   

    select sum(case a1 when '张三' then 1 end) [张三],sum(case a1 when '李四' then 1 end) [李四] from aa
      

  5.   

    select sum(case a1 when '张三' then 1 end) [张三],sum(case a1 when '李四' then 1 end) [李四] from aa
      

  6.   

    按以上两种方法均无法查询
    表aa是远程服务器上的ORACLE数据表
    使用SQLPLUS进行远程查询。
      

  7.   

    'sum(case a1 when '''+a1+''' 
                              then 1 else 0 end) 数量'+a1+','
    这一句我不明白啊,犹其是那个'''+a1+''',CrazyFor(太阳下山明朝依旧爬上来) 请你帮我解释一下行吗?我是个新手。谢谢了