最多乘以列

dom*_*enk 3 sql oracle max

我有一点问题:

在我的表中我有这些行:

坚持:

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 无需编写子查询就能得到我?

eum*_*iro 6

试试这个.它将获取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