如果ID的数据范围超出一行,则我的查询工作正常。但是,如果该ID例如有2行-第一个超出日期范围,第二个超出数据范围,则查询将向我返回此ID。
SELECT DISTINCT na.public_id
FROM na_agent_cients na
JOIN tt_call cc
ON na.public_id=cc.primary_contact_id
WHERE cc.call_date NOT BETWEEN TO_DATE('10/09/2016', 'dd/mm/yyyy') AND TO_DATE('13/09/2016', 'dd/mm/yyyy')
因此,例如,如果我有一个id,并且此id有两行,第一行的日期为05/09/2016,第二行的日期为11/09/2016,查询将向我返回此ID,那是错误的。
此ID存在于一排的日期范围,所以它应该被退回。如果要排除出现在范围之外的行中的所有ID,可以使用not exists
运算符:
SELECT DISTINCT na.public_id
FROM na_agent_cients na
WHERE NOT EXISTS (SELECT *
FROM tt_call cc
WHERE na.public_id = cc.primary_contact_id AND
cc.call_date NOT BETWEEN
TO_DATE('10/09/2016', 'dd/mm/yyyy') AND
TO_DATE('13/09/2016', 'dd/mm/yyyy'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句