I有3个CTE,具有同一表的3个不同切片 - 每个曲线都使用不同的标准排除某些行。如果我试图在单个子句中尝试执行此操作,则逻辑将发生冲突,因此3个不同的ctes。 然后,我需要将3个CTE重新集中在一起,但最终我需要确保来自3个CTE的唯一行是仅在任何其他CTE中仅存在
Singlecolumn
的值的行。我很想做这个方法。 eactCTE将大约具有70列的数据,但是我只想检查1列中的值是否匹配其他CTE。因此,如果每个CTE中的第一个列是“客户端ID”,我只希望纯粹基于“客户端ID”列中的3个CTE中的唯一条目,并且所有其他列都可以匹配,但通常不会。客户端ID是我唯一需要在3个CTES中排除重复项的列。 因此,我目前没有提供的代码 - 并没有寻求完美的答案,只是我可以探索的可能方法的正确方向推动。
我确定我是否正确理解。 您可以简单地使用每个CTE的子查询,选择其他两个不存在的clientId,然后结合这些记录
SELECT *
FROM (
SELECT * FROM CTE1
WHERE ClientID NOT IN (SELECT ClientID FROM CTE2 UNION SELECT ClientID FROM CTE3)
UNION ALL
SELECT * FROM CTE2
WHERE ClientID NOT IN (SELECT ClientID FROM CTE1 UNION SELECT ClientID FROM CTE3)
UNION ALL
SELECT * FROM CTE3
WHERE ClientID NOT IN (SELECT ClientID FROM CTE1 UNION SELECT ClientID FROM CTE2)
)