繁体   English   中英

Oracle查询帮助-用于分组的子查询

[英]Oracle Query Help - Sub-query for grouping

我有带有以下列和数据条目的表(示例)

EID    ROW_NUM    ROW_VALUE
SM      1           E
SM      2           E
PM      2           E
SM      3           E
AM      3           S 
PM      3           E
SM      4           E
AM      4           S
SM      5           S
AM      5           E
PM      5           E
SM      6           S
AM      6           E
PM      6           E
NM      6           S

我必须按row_num分组并删除以下组合上匹配的记录(精确)

  1. SM = E AND PM = E,这应仅删除与row_num = 2相关的行并保留row_num = 3。 尽管它包括此组合,但并不完全匹配。
  2. SM = S AND AM = E AND PM = E,这应仅删除与row_num = 5相关的行,并保留row_num = 6。 尽管它包括此组合,但并不完全匹配。

我正在寻找如何制定一个查询,可以删除或至少返回back_num这样的组合?

如果需要,我可以添加更多信息

我相信应该这样做:

select distinct row_num
from example_table t1
where
    not (
        exits ( select 1 
                from example_table t2 
                where t2.row_num=t1.row_num and t2.eid='SM' and t2.row_value='E')
        and
        exits ( select 1 
                from example_table t3 
                where t3.row_num=t1.row_num and t3.eid='PM' and t3.row_value='E')
    )
    and
    not (
        exits ( select 1 
                from example_table t4 
                where t4.row_num=t1.row_num and t4.eid='SM' and t4.row_value='S')
        and
        exits ( select 1 
                from example_table t5 
                where t5.row_num=t1.row_num and t5.eid='AM' and t5.row_value='E')
        and
        exits ( select 1 
                from example_table t6 
                where t6.row_num=t1.row_num and t6.eid='PM' and t6.row_value='E')
    );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM