我有一点问题:
在我的表中我有这些行:
坚持:
ID Date Histroy
1 01.01.2008 0
1 01.01.2008 1
1 01.01.2008 2
1 02.01.2008 0
1 02.01.2008 1
Run Code Online (Sandbox Code Playgroud)
现在当我选择像:
SELECT max(date), max(Histroy)
FROM PersHist
WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
ID Date Histroy
1 02.01.2008 2
Run Code Online (Sandbox Code Playgroud)
这是假的,因为没有02.01.2008/2(日期/历史)
是否有可能编写一个简单的SQL,02.01.2008/1
无需编写子查询就能得到我?
试试这个.它将获取ID = 1的所有条目,按日期(最新到最旧)排序,然后按Histroy(降序)排序,然后返回第一个条目(即最新日期和此日期内最高的历史记录).
SELECT * FROM
(SELECT ID, Date, Histroy
FROM PersHist
WHERE ID = 1
ORDER BY Date DESC, Histroy DESC)
WHERE ROWNUM = 1
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果没有子查询,它就无法工作.Oracle首先归属于s ROWNUM,然后ORDER是s