日期:2014-05-17  浏览次数:20432 次

关于主从表统计问题

create table aa
(
id int IDENTITY (1, 1) NOT NULL,
title varchar(20),
kk varchar(20)
)

create table bb
(
id int IDENTITY (1, 1) NOT NULL,
kk varchar(20),
singe int 
)
insert into aa values('第一个','a')
insert into aa values('第二个','b')

insert into bb values('a',1)
insert into bb values('a',1)
insert into bb values('a',0)
insert into bb values('a',0)
insert into bb values('a',1)

insert into bb values('b',1)
insert into bb values('b',0)
insert into bb values('b',1)
insert into bb values('b',0)
insert into bb values('b',0)

如果想生成如下的统计表格

title    全部   等于0
第一个    5        2
第二个    5       3

如果想这样弄个咋整?
------最佳解决方案--------------------
select title,
sum(case when singe is not null then 1 else 0 end) 全部,
sum(case when singe=0 then 1 else 0 end) 等于0
from aa,bb
where aa.kk=bb.kk
group by title

------其他解决方案--------------------
select aa.title, 
      count(bb.*) as '全部', 
      sum(case when bb.single =0 then 1 else 0 end) as '等于0'
from aa right join  bb on  aa.kk=bb.kk
grou by  aa.title
 
------其他解决方案--------------------

SELECT
 title,COUNT(TITLE),SUM(CASE BB.SINGE WHEN 0 THEN 1 ELSE 0 END)
  FROM
   aa LEFT JOIN BB ON AA.kk=BB.KK GROUP BY TITLE

------其他解决方案--------------------
感谢,f152520843,实际上这个表还有很多的字段,最后用的这个语句,感谢,结贴啦