如果第一个条件满足执行它,否则在 Oracle 中的第二个条件

颤音

我正在尝试从表中按状态获取员工。我有 2 个状态,如果员工有A条件,则取该行,否则取P状态行,最大oper_day如下所示:

桌子

---------------------------------------------------
id  |  emp_code  | name    | status   | oper_day  |
--------------------------------------------------
1   |  164094    | John    | P        | 2020-10-02 |
2   |  164094    | John    | P        | 2020-10-09 |
3   |  164094    | John    | A        | 2020-10-10 |
4   |  145890    | Mike    | P        | 2020-10-05 |

我的结果应该如下所示

--------------------------------
id  |  emp_code  | name    | status   | oper_day  |
--------------------------------------------------
1   |  164094    | John    | A        | 2020-10-10 |
2   |  145890    | Mike    | P        | 2020-10-05 |

任何帮助表示赞赏

蒂姆·比格莱森

使用ROW_NUMBER

WITH cte AS (
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY emp_code ORDER BY status, oper_day DESC) rn
    FROM yourTable t
)

SELECT id, emp_code, name, status, oper_day  
FROM cte
WHERE rn = 1;

这里的逻辑是,如果员工有状态A记录,它将被分配第一行号,因为A在 之前排序P否则,P将选择状态记录。如果有多个记录,我们会为每个员工选择最近的记录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于Oracle SQL中第一个查询的结果的第二个查询中的UNION表

Oracle - 用第二个表中的行更新第一个表中的数据

Oracle:匹配第一个和第二个表的行

第二个表中的第一个日期,其中日期大于表中第一个oracle中的日期

只取满足第二个条件的第一个

Oracle内部连接两个选择查询,列中的第二个列

mysql select和几个条件,但如果不满足第一个条件则满足第二个条件

SQL Oracle-使用存储在第二个表中的值(行)的列名对第一个表中的列中的值求和

Oracle Join表的日期范围在第一个表中,日期在第二个表中

如何在oracle的第二个表中插入第一个表运行时间值?

在LINQ JOIN中添加第二个条件,

根据第二个条件从第一个条件获取数据

满足条件时,第二个循环中第一个 foreach 循环的访问 ID

如果语句第二个条件始终执行

如果条件为真,则打印第一个句子,然后打印第二个句子它的条件为真

第一个为假时测试第二个条件

一个if语句中有两个条件,如果第一个条件为假,第二个条件是否重要?

如果第一个为真,则MySQL不读取第二个OR条件

在两个列表上执行查找并根据条件将第二个列表中的元素添加到第一个列表

如何从Oracle PLSQL中的字符串中获取倒数第二个单词

Oracle JSON_TABLE 到 PostgreSQL - 如何从 JSON 列中的第二个层次键进行搜索

如果需要第一个功能,该如何在脚本中执行第二个功能?

MYSQL查询具有设置条件的表,如果满足第二个条件,则从另一个表中获取一行并继续

MYSQL SELECT:如何获取一个额外的列,该列指示是否满足WHERE子句中的第一个或第二个条件?

Oracle注释查找“第一个字符以Alpha开头,第二个以数字开头”

Angular 2(+ Dart)内联条件:如果第一个条件为假,是否评估第二个条件?怎么解决?

为什么 if-else 表达式的第二个条件中的尾随逗号会导致第一个条件转换为元组

使用 REGEXP_SUBSTR 或 SUBSTR 函数在 Oracle SQL 中“第一个 _(下划线)后开始”和“第二个 _(下划线)结束”中查找子字符串

如果还满足第二个条件,Excel会计算唯一值