34,588
社区成员
发帖
与我相关
我的任务
分享
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.员工