读书人

一个统计有关问题,多谢了

发布时间: 2012-03-05 11:54:02 作者: rapoo

一个统计问题,谢谢了
表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


on a.id = t.table_id

drop table A,B
/*
id name counts
----------- ---------- -----------
1 A 3
3 C 2

(所影响的行数为 2 行)

id name counts
----------- ---------- -----------
1 A 3
2 B 0
3 C 2

(所影响的行数为 3 行)
*/
[解决办法]

这完全不需要存储过程的,一条语句可以搞定

select a.*,b.COUNTS from A a
left join
(
select TABLE_ID,count(*)as COUNTS from B group by TABLE_ID
) B b
on a.id=b.TABLE_ID

读书人网 >SQL Server

热点推荐