根据一个值过滤多行

时间:2019-01-24 22:07:37

标签: sap business-intelligence

在我的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个相同的号码以不同的顺序...如果有区别的话。

1 个答案:

答案 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

希望这会有所帮助。请还原。