我有以下基本查询:
SELECT INIT,TIDSPUNKT,AKTIVITETSTYPE
FROM ExampleDB.SAFE_DATA_VP_KR
WHERE DATO = '2020-05-25' AND
AKTIVITETSTYPE = 'Udg¿ende/Produktion' AND
INIT IN (SELECT initialer
FROM ExampleDB.SAFE_DATA_MEDARBEJDER
WHERE STATUS IN (1) AND
MED_STEDKODE_ID IN (5530) AND
ROLE_ID NOT IN (4))
ORDER BY INIT, TIDSPUNKT;
我想修改它并添加一个ACTIVITY_ID!= 53,如下所示,但它不起作用。
SELECT INIT, TIDSPUNKT,AKTIVITETSTYPE
FROM ExampleDB.SAFE_DATA_VP_KR
WHERE DATO = '2020-05-25'
AND AKTIVITETSTYPE = 'Udg¿ende/Produktion' AND
INIT IN (SELECT initialer
FROM ExampleDB.SAFE_DATA_MEDARBEJDER
WHERE STATUS IN (1) AND
MED_STEDKODE_ID IN (5530) AND
ROLE_ID NOT IN (4)) AND
INIT IN (SELECT initialer
FROM ExampleDB.SAFE_DATA_VAGTPLAN
WHERE AKTIVITET_ID != 53)
ORDER BY INIT, TIDSPUNKT;
NOT IN
过滤掉具有53活动的任何init
值:and init not in (Select initialer
from ExampleDB.SAFE_DATA_VAGTPLAN
where AKTIVITET_ID = 53
)
注意:我强烈不建议在子查询中使用NOT IN
,因为它们不能正确处理NULL
值。您应该使用NOT EXISTS
重写它-在为表引用提供适当的别名并限定所有列引用之后。