CREATE TABLE stu
(
stuid INT,
stuname VARCHAR(20)
)
GO
INSERT INTO stu VALUES(1, 'a')
INSERT INTO stu VALUES(2, 'b')
INSERT INTO stu VALUES(3, 'c')
GO
CREATE TABLE source
(
stuid INT,
sid INT
)
INSERT INTO source VALUES(1, 10)
INSERT INTO source VALUES(1, 11)
INSERT INTO source VALUES(2, 10)
GO
SELECT t.stuid, t.stuname, sid_total=COUNT(s.sid) FROM stu t LEFT JOIN source s ON t.stuid = s.stuid
GROUP BY t.stuid, t.stuname
if exists(select * from sysobjects where name='stu')
drop table stu
go
create table stu(stuid int,stuname varchar(10))
insert into stu values(1, 'a')
insert into stu values(2, 'b')
insert into stu values(3, 'c')
go
if exists(select * from sysobjects where name='source')
drop table source
go
create table source(stuid int, sid int)
insert into source values(1, 10)
insert into source values(1, 11)
insert into source values(2, 10)
go
--select * from stu
--select * from source
select a.stuid,stuname,选课门数=sum(case when sid>0 then 1 else 0 end)
from stu a left join source b on a.stuid=b.stuid group by a.stuid,stuname
结果:
stuid stuname 选课门数
----------- ---------- -----------
1 a 2
2 b 1
3 c 0
create table stu(stuid int,stuname varchar(10))
insert into stu values(1, 'a')
insert into stu values(2, 'b')
go
create table source(stuid int, sid int)
insert into source values(1, 10)
insert into source values(1, 11)
insert into source values(2, 10)
go
SELECT A.stuid, A.stuname,B.CNT FROM STU A inner join (select stuid, count(sid) cnt from source group by stuid ) b on a.stuid=b.stuid
drop table stu,source
/* 结果
stuid stuname CNT
----------- ---------- -----------
1 a 2
2 b 1
create table stu(stuid int,stuname varchar(10))
insert into stu values(1, 'a')
insert into stu values(2, 'b')
go
create table source(stuid int, sid int)
insert into source values(1, 10)
insert into source values(1, 11)
insert into source values(2, 10)
go
select stu.* , isnull(t.cnt,0) 选学课程的个数 from stu
left join
(
select stuid,count(*) cnt from source group by stuid
) t
on stu.stuid = t.stuid
drop table stu,source
/*
stuid stuname 选学课程的个数
----------- ---------- -----------
1 a 2
2 b 1