create table 表A(
id int,
姓名 varchar(10),
年龄 int
)
insert into 表A values(1,'张三',20)
insert into 表A values(2,'马六',21)
insert into 表A values(5,'王二',22)
create table 表B(
id int,
课程 varchar(10),
出勤 int
)
insert into 表B values(1,'化学',3)
insert into 表B values(1,'化学',2)
insert into 表B values(5,'物理',6)
insert into 表B values(2,'化学',1)
select a.id,a.姓名,a.年龄,出勤总天数=isnull(b.出勤总天数,0),化学出勤天数=isnull(b.化学出勤天数,0)
from 表A a
left join
(select id,sum(出勤) 出勤总天数,sum(case when 课程='化学' then 出勤 else 0 end) 化学出勤天数 from 表B group by id) b
on a.id=b.id
drop table 表A,表B
/*
id
姓名
年龄
出勤总天数
化学出勤天数
----------- ---------- ----------- ----------- -----------
1
张三
20
5
5
2
马六
21
1
1
5
王二
22
6
0
(所影响的行数为 3 行)
*/