我很难弄清楚如何检查以前的记录以查看当前记录是否应该更新。
不想使用滞后函数,因为我没有要返回多少记录的信息。
我有一个包含员工加薪信息的表。如果过去 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/