小编use*_*240的帖子

SQL如何将CASE与NOT EXISTS语句一起使用

我在SQL中有一个非常复杂的查询,我从各种表中提取大量信息并进行各种连接.我想拉一个列来检查特定的tradeId是否包含在2个不同的表中.虽然如此,我仍然坚持如何做到这一点.

下面的代码为我提供了Trade表中所有不在TCM中的TradeIds(它只是2个表的组合).但是,我希望交易表中的所有交易,然后是一列,以表明它是否在TCM中找到.

我知道这将通过CASE WHEN查询完成,但我很困惑如何构造它以便它适合CASE WHEN.

With subCA As
(Select distinct OTPTradeId, ConfoAuditSenderRef from ConfirmationAudit where ConfoAuditSenderRef like 'HBEUM%'),
TCM As
(Select distinct OTPTradeID from subCA union ALL select TradeId from subCA inner join ConfirmationSent on (OTPTradeId = ConfoId 
AND ConfoAuditSenderRef like 'HBEUMN%'))
select TradeId from Trade where NOT EXISTS (Select OtpTradeId from TCM where OtpTradeId = TradeId) 
and TradeDate = '17 jun 2013'
Run Code Online (Sandbox Code Playgroud)

下面是我试图将它放入CASE WHEN语句但我得到一个错误,因为如果没有我认为的WHERE,则不允许使用NOT EXISTS.但我所追求的是这样的.如果我使用NOT IN它变得非常慢,就像5分钟一样,这是一个更大的查询的一部分,我不希望它花这么长时间 - 如果可能的话!

With subCA As
(Select distinct OTPTradeId, ConfoAuditSenderRef from ConfirmationAudit where ConfoAuditSenderRef …
Run Code Online (Sandbox Code Playgroud)

sql-server exists

7
推荐指数
2
解决办法
4万
查看次数

标签 统计

exists ×1

sql-server ×1