我有一张如下表:
EmployeeName ----- date ------ seqno
A 10-02-2014 2
B 10-02-2014 1
C 10-01-2014 1
D 10-02-2013 2
E 10-02-2013 1
现在每当在同一天添加新员工时,seq no就会被添加到1个以上..假设为10-02-2014添加了一个员工,seq num变为3 ..所以i need the latest record with max sequence number
。我能用rownum做到这一点:
select * from employee where rownum=1 order by date,seqno DESC;
这是正确的吗?
有没有办法在不使用rownum的情况下执行此操作?
答案 0 :(得分:1)
是的,使用子查询
select * from employee e
where date =
(Select Max(date)
from employee)
and seqno =
(Select Max(seqno)
from employee
where date = e.date)
您显示的查询应为日期和seqNo指定desc ....
(如果未指定,查询处理器将采用升序方式。)
select * from employee
where rownum=1
order by date desc, seqno DESC;
答案 1 :(得分:0)
您可以通过此方法使用rownum
。 rownum
在FROM clause
中形成,因此排序将改变数字序列。您必须使用子查询来获得正确的结果。
SELECT * FROM
(
SELECT *
FROM employee
ORDER BY date DESC, seqno DESC
) A
WHERE rownum = 1