我有一个包含工资增长历史(Oracle)的表emp_id- 用于员工识别,inc_date- 工资变更的日期和inc_amount - 工资变化的金额.我想得到inc_amount最后一个inc_date.
emp_pay_inc:
==============================
emp_id | inc_date | inc_amount
==============================
625 | 1/1/2002 | 0
625 | 5/6/2003 | 12000
625 | 1/7/2004 | 35000
625 | 8/1/2009 | -5000
Run Code Online (Sandbox Code Playgroud)
我想要查询的伪代码:
SELECT epi.inc_amt
FROM emp_pay_inc epi
WHERE epi.inc_date = MAX(epi.inc_date) -- I know this won't work, it is just for illustration
Run Code Online (Sandbox Code Playgroud)
我尝试了什么(我不想在副本inc_date相同的情况下使用子查询emp_id:
SELECT epi.inc_amt
FROM emp_pay_inc epi
WHERE ROWNUM = 1
ORDER BY epi.inc_date
Run Code Online (Sandbox Code Playgroud)
但这不起作用.它inc_amount为inc_date1/1/2002 返回0 .显然,Oracle会将ROWNUM它们显示在原始表中,而不是查询返回的数据集.
我猜你想要每个员工这个.
SELECT emp_id, inc_date, inc_amount
FROM (SELECT emp_id,
inc_date,
inc_amount,
ROW_NUMBER ()
OVER (PARTITION BY emp_id ORDER BY inc_date DESC)
r
FROM emp_pay_inc)
WHERE r = 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |