显示记录至少存在于一个表中

时间:2018-01-02 10:16:53

标签: sql

我有3个表(table1.table2和table3),每个表都有员工出勤和员工代码

例如:

              Table 1    Table 2    Table 3
Employee Code  1001       1001       no record
Employee Code  no record  1002       no record
Employee Code  1003       no record  1003

最后我需要在下面显示数据。

         Table 1 Table 2  Table 3         
1001     Y       Y        N
1002     N       Y        N
1003     Y       N        Y

即我需要向员工展示相应表格中存在/不存在的员工。

1 个答案:

答案 0 :(得分:0)

您可以使用完整的外部联接来执行此操作:

select emp_code, 
       case when t1.emp_code is not null then 'Y' else 'N' end as table_1,
       case when t2.emp_code is not null then 'Y' else 'N' end as table_2,
       case when t3.emp_code is not null then 'Y' else 'N' end as table_3
from table_1 t1
  full outer join table_2 t2 using (emp_code)
  full outer join table_3 t2 using (emp_code);

请注意,选择列表中的emp_code是不合格的。基于using关键字的联接将返回联接条件的非空值,从而无需coalesce()case

您没有说明您的数据库,但上面是标准SQL。

在线示例:http://rextester.com/XPVSRZ98817