首页 > 解决方案 > SQL Where 条件与 2 个相互矛盾的子句 Oracle

问题描述

我有一个包含元素列表的表格,这些元素具有由一个关系确定的“创建者类型”。此关系字段值可以是 1-2-3。

我必须使用以下条件进行 sql 查询:

时间表

ID|NAMEUNIQUE|STARTTIME|ENDTIME|STATUS|CREATOR|CREATOR_TYPE
1 |AAAAAAAAAA|.........|.......|......|.......|1
2 |BBBBBBBBBB|.........|.......|......|.......|2
3 |BBBBBBBBBB|.........|.......|......|.......|1
4 |CCCCCCCCCC|.........|.......|......|.......|3
5 |DDDDDDDDDD|.........|.......|......|.......|1

在这种情况下,查询应返回 ID 为 2、3、4、5 的行并丢弃 1,因为它是一个唯一的计划 (AAAAAAAAAA),没有创建者类型 2 或 3。

对不起我的英语,很难向我解释这个

标签: sqloracle

解决方案


select *
from   (
         select s.*, 
                min(creator_type) over (partition by nameunique) as min_type,
                max(creator_type) over (partition by nameunique) as max_type
         from   schedules s
       )
where  min_type = 1 and max_type > 1
;

推荐阅读