我有一个小问题:
在我的表中我有这些行:
PersHist:
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
现在,当我进行如下选择时:
SELECT max(date), max(Histroy)
FROM PersHist
WHERE ID = 1
我得到这个输出:
ID Date Histroy
1 02.01.2008 2
这是错误的,因为没有02.01.2008/2
(日期/历史)
是否可以编写一个简单的 SQL 来帮助我02.01.2008/1
不写子查询?
尝试这个。它将获取 ID=1 的所有条目,按日期(从最新到最旧)排序,然后按历史记录(降序)排序,然后返回第一个条目(即,具有最新日期和该日期内最高历史记录)。
SELECT * FROM
(SELECT ID, Date, Histroy
FROM PersHist
WHERE ID = 1
ORDER BY Date DESC, Histroy DESC)
WHERE ROWNUM = 1
不幸的是,如果没有子查询,它就无法工作。 Oracle 首先将其归因于ROWNUM
进而ORDER
s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)