当 Snowflake SQL 中的两个条件都满足时,从 Select 中删除记录

Remove records from Select when both conditions are met in Snowflake SQL

我正在尝试在满足此条件时从 CTE 中删除记录 -

删除职位 ID 0000087544 和支付代码为 SUPA 的时间表

select * from timesheets where ( (external_payroll_code not in ('SUPA')) and (position_id  not in ('0000087544')) )

正在删除所有记录 position_id = '0000087544',而我只想删除 external_payroll_code = 'SUPA' 的位置 ID。

有没有一种方法可以在 SELECT 中将条件排除指定为 Snowflake SQL 中的子查询,或者编写 JOIN 子句是唯一的出路。

如有任何提示,我们将不胜感激。谢谢!

输入

员工编号 职位编号 外部支付码
1A 0000087544 SUPA
1B 00000888888 SUPA

输出

员工编号 职位编号 外部支付码
1B 00000888888 SUPA

您只需稍微更改一下 AND/OR 逻辑即可。

with timesheets as (select  employee_id,  position_id,  external_payroll_code from values ('1A',  '0000087544',   'SUPA'), ('1B', '00000888888',  'SUPA'))

select * from timesheets where not (external_payroll_code in ('SUPA') and position_id  in ('0000087544'))

EMPLOYEE_ID POSITION_ID EXTERNAL_PAYROLL_CODE
1B  00000888888 SUPA