我有一个Employee表,其中包含带有ID的雇员姓名列表,它们从该表流向具有以下结构的两个表:
EMP表
| 识别码|员工姓名|
| - -|- -|
| 100个|鲍勃|insert into EMP values('100','BOB')``insert into EMP values('100','BOB')
表一
| 识别码|名称|日期|
| - -|- -|- -|
| 100个|鲍勃|2021年10月1日|
| 100个|鲍勃|2021年11月1日|create table Table_1(ID varchar(20),NAME varchar(20), DATE date);
insert into Table_1 values('100','BOB','01-10-2021');insert into Table_1 values('100','BOB','01-11-2021');
表二
| 识别码|名称|日期|
| - -|- -|- -|
| 100个|鲍勃|2021年11月1日|
| 100个|鲍勃|2021年12月1日|create table Table_2(ID varchar(20),NAME varchar(20), DATE date);
insert into Table_2 values('100','BOB','01-11-2021');insert into Table_1 values('100','BOB','01-12-2021');
表日期
| 月份|日期|
| - -|- -|
| 九月|2021年9月1日|
| 十月|2021年10月1日|
| 十一月|2021年11月1日|
| 十二月|2021年12月1日|create table DATE(Month varchar(20), DATE date);
insert into DATE values('Sep','01-09-2021');insert into DATE values('Sep','01-10-2021');insert into DATE values('Sep','01-11-2021'); insert into DATE values('Sep','01-12-2021'))
我想参考表3(日期表),以确定表3记录的哪个日期未出现在表1和表2中(因为给定病例记录的日期= 2021年9月1日是预期输出)
预期输出
| 识别码|名称|日期|
| - -|- -|- -|
| 100个|鲍勃|2021年9月1日|
2条答案
按热度按时间velaa5lx1#
我想参考表3(Date Table)来识别表3中哪些日期记录没有出现在表1和表2中
如果您只想显示不显示的全部日期,可以使用
not exists
或left join
:这就是您要 * 问 * 的问题。但是,您想要的结果表明,您想要的员工/日期组合没有出现。如果是这种情况,则
CROSS JOIN
emp
和dates
表,并筛选出不存在的组合。一种方法是:cnh2zyt32#
试试看: