34,838
社区成员




select Case When a.员工 is not null Then a.员工
When b.员工 is not null Then b.员工
When c.员工 is not null Then C.员工
End As 员工,
isnull(isnull(a.部门,b.部门),c.部门) 部门 ,
isnull(a.迟到次数 , 0) 迟到次数 ,
isnull(b.请假次数 , 0) 请假次数 ,
isnull(c.早退次数 , 0) 早退次数
from A
full join B on A.员工 = B.员工
full join C on A.员工 = C.员工
declare @ta table(员工 char(1), 部门 char(2),迟到次数 int)
insert @ta select 'A','a', 3
insert @ta select 'B','b', 4
insert @ta select 'C','c', 5
declare @tb table(员工 char(1), 部门 char(2),请假次数 int)
insert @tb select 'B','b', 3
insert @tb select 'C','c', 2
declare @tc table(员工 char(1), 部门 char(2),早退次数 int)
insert @tc select 'C','c', 5
insert @tc select 'D','d', 1
/*
员工 部门 迟到 请假 早退
A', a 3 0 0
B', d 4 3 0
C', c 5 2 5
D', d 0 0 1
*/
select distinct isnull(isnull(a.员工,b.员工),c.员工) as 员工,
isnull(isnull(a.部门,b.部门),c.部门) as 部门,
[迟到] = isnull(a.迟到次数,0),
[请假] = isnull(b.请假次数,0)
,[早退] = isnull(c.早退次数,0)
from @ta a
full join @tb b on a.员工 = b.员工
full join @tc c on a.员工 = c.员工
/*
员工 部门 迟到 请假 早退
---- ---- ----------- ----------- -----------
A a 3 0 0
B b 4 3 0
C c 5 2 5
D d 0 0 1
(所影响的行数为 4 行)
*/
create table A(员工 varchar(10), 部门 varchar(10), 迟到次数 int)
insert into A values('A', 'a', 3 )
insert into A values('B', 'b', 4 )
insert into A values('C', 'c', 5 )
create table B(员工 varchar(10), 部门 varchar(10), 请假次数 int)
insert into B values('B', 'b', 3 )
insert into B values('C', 'c', 2 )
create table C(员工 varchar(10), 部门 varchar(10), 早退次数 int)
insert into C values('C', 'c', 5 )
insert into C values('D', 'd', 1 )
go
select 员工=coalesce(A.员工, B.员工, C.员工)
,部门=coalesce(A.部门, B.部门, C.部门)
,迟到=isnull(迟到次数,0)
,请假=isnull(请假次数,0)
,早退=isnull(早退次数,0)
from A full join B on A.员工=B.员工
full join C on A.员工=C.员工 or B.员工=C.员工
drop table A,B,C
/*
员工 部门 迟到 请假 早退
---------- ---------- ----------- ----------- -----------
A a 3 0 0
B b 4 3 0
C c 5 2 5
D d 0 0 1
(4 row(s) affected)
*/
create table A(员工 varchar(10), 部门 varchar(10), 迟到次数 int)
insert into A values('A', 'a', 3 )
insert into A values('B', 'b', 4 )
insert into A values('C', 'c', 5 )
create table B(员工 varchar(10), 部门 varchar(10), 请假次数 int)
insert into B values('B', 'b', 3 )
insert into B values('C', 'c', 2 )
create table C(员工 varchar(10), 部门 varchar(10), 早退次数 int)
insert into C values('C', 'c', 5 )
insert into C values('D', 'd', 1 )
go
select isnull(isnull(a.员工,b.员工),c.员工) 员工 ,
isnull(isnull(a.部门,b.部门),c.部门) 部门 ,
isnull(a.迟到次数 , 0) 迟到次数 ,
isnull(b.请假次数 , 0) 请假次数 ,
isnull(c.早退次数 , 0) 早退次数
from A
full join B on A.员工 = B.员工
full join C on A.员工 = C.员工
drop table A,B,C
/*
员工 部门 迟到次数 请假次数 早退次数
---------- ---------- ----------- ----------- -----------
A a 3 0 0
B b 4 3 0
C c 5 2 5
D d 0 0 1
(所影响的行数为 4 行)
*/
--try
select 员工=coalesce(A.员工, B.员工, C.员工)
,部门=coalesce(A.部门, B.部门, C.部门)
,迟到=isnull(迟到次数,0)
,请假=isnull(请假次数,0)
,早退=isnull(早退次数,0)
from A full join B on A.员工=B.员工
full join C on A.员工=C.员工 or B.员工=C.员工
select isnull(isnull(a.员工,b.员工),c.员工) 员工 ,
isnull(isnull(a.部门,b.部门),c.部门) 部门 ,
isnull(a.迟到次数 , 0) 迟到次数 ,
isnull(b.请假次数 , 0) 请假次数 ,
isnull(c.早退次数 , 0) 早退次数
from A
full join B on A.员工 = B.员工
full join C on A.员工 = C.员工