Sql 查找没有特定类型的相关行的事务

Sql 查找没有特定类型的相关行的事务,sql,sql-server,Sql,Sql Server,我有两张桌子。事务和事务单元状态 事务具有事务\u id,事务\u状态具有事务\u id和状态\u代码 交易 Transaction_ID 1 2 3 事务处理单元状态 transaction_id status_code 1 Created 1 Executed 1 Completed 2 Created 2 Executed 3 Cre

我有两张桌子。事务和事务单元状态

事务具有事务\u id,事务\u状态具有事务\u id和状态\u代码

交易

Transaction_ID
1
2
3
事务处理单元状态

transaction_id status_code
1              Created
1              Executed
1              Completed
2              Created
2              Executed
3              Created

是否有人可以帮助我编写一个查询,该查询可以为我提供已执行但未完成的事务ID

您可以这样做:

select transaction_id  
from Transaction_Status
where transaction_id  not in (select transaction_id 
from Transaction_Status
where status_code = 'Completed')
and status_code = 'Executed'
group by transaction_id 
使用聚合:

select transaction_id
from Transaction_Status ts
where status_code in ('Completed', 'Executed')
group by transaction_id
having min(status_code) = max(status_code) and -- only one status code
       min(status_code) = 'Executed';
实际上,您可以使用代码的字母顺序,并简化以下操作: 让minstatus\u代码=‘已执行’

选择事务\u id 从事务处理单元状态 如果事务\u id不在选择事务\u id中 从事务处理单元状态 其中状态_代码=‘已完成’
状态_代码='已执行'

你试过什么吗???嗨@user2532244这个答案对你有帮助吗?