根据一个值过滤多行

问题描述 投票:0回答:1

在我的BO

我有一张桌子:

OrderID | order Number | reason code 
123     | a            | r2
123     | b            | r1
123     | c            | r3
124     |d             | r3

我正在使用2张相同的来源,而且我需要所有订单ID,其中我有至少一行的理由R2

而在另一个所有其他所以需要一个应该只有:

OrderID | order Number | reason code 
123     | a            | r2
123     | b            | r1
123     | c            | r3

和第二张应该只有:

OrderID | order Number | reason code 
124     |d             | r3

我可以补充一点,订单号是唯一的,所以不能在不同的订单中有2个相同的数字......如果它有任何区别。

sap business-intelligence
1个回答
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

希望这可以帮助。请回复。

© www.soinside.com 2019 - 2024. All rights reserved.