sql - 检查以前的记录以更新 Oracle 中的当前记录

标签 sql oracle plsql

我很难弄清楚如何检查以前的记录以查看当前记录是否应该更新。

不想使用滞后函数,因为我没有要返回多少记录的信息。

我有一个包含员工加薪信息的表。如果过去 6 个月内之前的绩效增长 PCT 大于当前的绩效增长,我想在 IND 字段中打 X。目前的记录是2012/05年的记录。

Emp    Action   Date       Code     proj   PCT   Ind
====================================================
123    raise    2012/01    COL      acct   2
123    raise    2012/01    Merit    soft   7
123    raise    2012/02    Merit    Acct   4
123    Raise    2012/05    merit    soft   6     ?

最佳答案

这不是特别有效,但您可以使用强力方法

UPDATE <<table_name>> a
   SET ind = 'X'
 WHERE <<date column>> = (SELECT MAX(<<date column>>
                            FROM <<table name>> b
                           WHERE a.emp = b.emp)
   AND EXISTS( SELECT 1
                 FROM <<table name>> c
                WHERE a.emp = c.emp
                  AND c.code = 'Merit'
                  AND c.action = 'raise'
                  AND c.pct  > a.pct
                  AND c.<<date column>> > sysdate - interval '6' month 
                  AND c.rowid != a.rowid);

关于sql - 检查以前的记录以更新 Oracle 中的当前记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10963628/

相关文章:

oracle - 自动列表分区

.net - 为 Entity Framework 安装Oracle Data Provider时的"access denied"

sql - 在插入第三个表之前,如何使用触发器从两个表中获取日期?

mysql - 正确查询以获取日期时间

sql - Oracle SQL中结合LIMIT子句访问主表字段的子查询

sql - 读取 xsi :type from T-SQL

oracle - 如何重现进程: Form - Automatic Row Processing (DML)的代码

sql - 一次选择形成大量多对多关系的最佳实践

sql - 在 PL/SQL/Oracle Forms 中搜索

oracle - 如何获取Oracle中特定记录的计数?