日期:2014-05-18  浏览次数:20512 次

一个统计问题,谢谢了
表A
ID       NAME    
1           A          
2           B
3           C

表B
TABLE_ID                   DATA
    1                             XXXXX
    1                             XXXXX
    1                             XXXXX
    3                             YYYYY
    3                             YYYYY

希望返回
    ID         NAME       COUNTS
      1           A               3
      3           C               2
没有B,因为表B中没有B的数据

或者  
    ID         NAME       COUNTS
      1           A               3
      2           B               0
      3           C               2

2个的存储过程,谢谢了


------解决方案--------------------
select a.id,a.name,count(1) counts from a Inner Join b On a.id=b.id group by a.id,a.name
------解决方案--------------------
一、
select 表A.id as id,表A.name as name,count(*) as counts
from 表A,表B
where 表A.id=表B.TABLE_ID
group by 表A.id,表A.name
order by 表A.id

二、
select 表A.id as id,表A.name as name,isnull(表C.counts,0) as counts
from 表A left join (
select TABLE_ID,count(*) as counts from 表B group by TABLE_ID
) 表C on 表A.id=表C.TABLE_ID
------解决方案--------------------
select a.id,a.name,count(*) counts from a ,b where a.id=b.id group by a.id,a.name
------解决方案--------------------
if object_id( 'pubs..A ') is not null
drop table A
go

create table A(ID int,NAME varchar(10))
insert into A(ID,NAME) values(1, 'A ' )
insert into A(ID,NAME) values(2, 'B ')
insert into A(ID,NAME) values(3, 'C ')
go

if object_id( 'pubs..B ') is not null
drop table B
go

create table B(TABLE_ID int,DATA varchar(10))
insert into B(TABLE_ID,DATA) values(1, 'XXXXX ')
insert into B(TABLE_ID,DATA) values(1, 'XXXXX ')
insert into B(TABLE_ID,DATA) values(1, 'XXXXX ')
insert into B(TABLE_ID,DATA) values(3, 'YYYYY ')
insert into B(TABLE_ID,DATA) values(3, 'YYYYY ')
go

select A.id , A.name , t.counts from A,
(select table_id , count(*) counts from b group by table_id) t
where a.id = t.table_id

select A.id , A.name , isnull(t.counts,0) counts from A
left join
(select table_id , count(*) counts from b group by table_id) t