【问题标题】:filter multiple lines based on one value根据一个值过滤多行
【发布时间】:2019-01-24 22:07:37
【问题描述】:

在我的BO里

我有一张桌子:

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

我对 2 张纸使用相同的来源,其中一张我需要所有 OrderID,其中我有理由 R2 至少有一行

还有其他的 所以需要一个应该只有:

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

第二张纸应该只有:

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

我可以补充一点,订单号是唯一的,所以不能在不同的订单中有 2 个相同的数字......如果有什么不同的话。??

【问题讨论】:

  • 好像少了点什么……或者这比看起来简单。似乎您所做的只是根据 OrderID 拆分结果。你能提供更多细节吗?

标签: business-intelligence business-objects


【解决方案1】:

这样的?

第一张 -

;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

希望这会有所帮助。请恢复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2019-12-27
    相关资源
    最近更新 更多