Sql 查找没有特定类型的相关行的事务
我有两张桌子。事务和事务单元状态 事务具有事务\u id,事务\u状态具有事务\u id和状态\u代码 交易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
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这个答案对你有帮助吗?