cnsmr_pymnt_tag
表中有多个与cnsmr
表中的每个消费者相关联的付款代码。
如果任何消费者的付款都有下面列出的标签ID之一(416,417,2823等),那么我不希望结果中有cnsmr_idntfr_id
。
如果消费者的付款都没有其中一个tag_ID,我的代码可以正常工作,但如果消费者混合使用了我的列表中的Tag_ID代码,那么我得到的结果不正确,消费者数量最终会在我的结果
我理解它正在完成我正在告诉的内容,但是如何更改它以便消费者号码不在结果中,如果它与任何tag_ID值相关联?
SELECT DISTINCT
cnsmr.cnsmr_idntfr_agncy_id
FROM
cnsmr_pymnt_jrnl
INNER JOIN
cnsmr_pymnt_tag ON cnsmr_pymnt_jrnl.cnsmr_pymnt_jrnl_id = cnsmr_pymnt_tag.cnsmr_pymnt_jrnl_id
INNER JOIN
tag ON cnsmr_pymnt_tag.tag_id = tag.tag_id
INNER JOIN
cnsmr ON cnsmr_pymnt_jrnl.cnsmr_id = cnsmr.cnsmr_id
WHERE
cnsmr_pymnt_tag.TAG_ID NOT IN
( 416 -- VOLUNTARY
,417 -- VOLUNTARY
,2823 -- VOLUNTARY SPEED PAY
,583 -- SPEED PAY
,1130 -- VOLUNTARY TVOLCC
,581 -- VOLUNTARY LBXVOL TAG
)
答案 0 :(得分:0)
尝试像这样修改你的代码
WHERE
cnsmr_pymnt_tag.TAG_ID NOT IN
( 416 -- VOLUNTARY
)
and
cnsmr_pymnt_tag.TAG_ID NOT IN (471)
......等等
或者,您也可以尝试下面的内容..
;with cte(tag)
as
( 416 -- VOLUNTARY
,417 -- VOLUNTARY
,2823 -- VOLUNTARY SPEED PAY
,583 -- SPEED PAY
,1130 -- VOLUNTARY TVOLCC
,581 -- VOLUNTARY LBXVOL TAG
)
(your whole query as in question) wq
join
cte c
on c.tag<>wq.tag
答案 1 :(得分:0)
如果我正确理解您的要求,您正在寻找一个消费者ID列表,这些消费者ID绝对没有标签为416,417,581,583,1130,2823的付款期刊。如果这是正确的,您可能想要什么只是一个简单的不存在,将使任何支付期刊上任何这些标签的消费者ID无效
SELECT DISTINCT
C.cnsmr_idntfr_agncy_id
FROM cnsmr AS M
WHERE NOT EXISTS
(
SELECT 1
FROM tag AS T
JOIN cnsmr_pymnt_tag AS CPT
ON T.tag_id = CPT.tag_id
JOIN cnsmr_pymnt_jrnl AS CPJ
ON CPT.cnsmr_pymnt_jrnl_id = CPJ.cnsmr_pymnt_jrnl_id
JOIN cnsmr AS C
ON CPJ.cnsmr_id = C.cnsmr_id
WHERE T.tag_id IN (416,417,581,583,1130,2823)
AND C.cnsmr_id = M.cnsmr_id
)