我有一张表TAB,里面有A ,B,C三个字段,A,B为主件,C的值只能在111,222,333三个中选
记录如
A B C
me D 111
she k 222
me f 111
me e 333
我现在要取出的形式是 A ,111的个数,222的个数,333的个个数
me, 2 0 1
she 0 1 0
请问这样的SQL语句怎么写
...全文
642打赏收藏
这个的SQL语句怎么写
我有一张表TAB,里面有A ,B,C三个字段,A,B为主件,C的值只能在111,222,333三个中选 记录如 A B C me D 111 she k 222 me f 111 me e 333 我现在要取出的形式是 A ,111的个数,222的个数,333的个个数 me, 2 0 1 she 0 1 0 请问这样的SQL语句怎么写
动态的如下:
create table #t(A varchar(10),B varchar(10),C varchar(10))
insert into #t(A,B,C)
select 'me', 'D', '111' union all
select 'she', 'k', '222' union all
select 'me', 'f', '111' union all
select 'me', 'e', '333'
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when c='''+c+''' then 1 else 0 end) ['+c+'的个数]'
from #t group by c
exec('select a'+@sql+' from #t group by a')
drop table #t
select a,sum(case when c=111 then 1 else 0 end) as [111的个数],
sum(case when c=222 then 1 else 0 end) as [222的个数],
sum(case when c=333 then 1 else 0 end) as [333的个数]
from tab
group by a