SQL/Union Assistance除外

问题描述 投票:0回答:1
如果可能的话,我需要一些帮助,我发现很难轻松解释这种情况,所以很抱歉。

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) )

sql sql-server
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.