在我的BO中
我有一张桌子,上面有:
OrderID | order Number | reason code
123 | a | r2
123 | b | r1
123 | c | r3
124 |d | r3
我在2张纸上使用同一来源,在一张纸上,我需要所有OrderID,其中我至少有1条线是R2
,其余所有 因此只需要一个即可:
OrderID | order Number | reason code
123 | a | r2
123 | b | r1
123 | c | r3
第二张纸应该只有:
OrderID | order Number | reason code
124 |d | r3
我可以补充说,订单号是唯一的,因此不能有2个相同的号码以不同的顺序...如果有区别的话。
答案 0 :(得分:0)
像这样吗?
第一张纸-
;with test_data(order_id, order_number, reason_code) as (
select 123, 'a', 'r2' union all
select 123, 'b', 'r1' union all
select 123, 'c', 'r3' union all
select 124, 'd', 'r3'
)
--
-- Test data above; Desired query below
--
select *
from test_data a
where exists (
select 1 from test_data b
where a.order_id = b.order_id
and b.reason_code = 'r2'
)
输出:
123 a r2
123 b r1
123 c r3
第二张纸-
;with test_data(order_id, order_number, reason_code) as (
select 123, 'a', 'r2' union all
select 123, 'b', 'r1' union all
select 123, 'c', 'r3' union all
select 124, 'd', 'r3'
)
--
-- Test data above; Desired query below
--
select *
from test_data a
where NOT exists (
select 1 from test_data b
where a.order_id = b.order_id
and b.reason_code = 'r2'
)
输出:
124 d r3
希望这会有所帮助。请还原。