Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-按id表查找最大日期组_Sql_Oracle_Greatest N Per Group - Fatal编程技术网

SQL-按id表查找最大日期组

SQL-按id表查找最大日期组,sql,oracle,greatest-n-per-group,Sql,Oracle,Greatest N Per Group,下面有一个表,我需要得到最大日期等于2的行 REMUN_ID HISTO_ID DATE_MAJ STATUT 2122 7005 08/27/2014 11:10:23 2 1603 5486 08/27/2014 11:10:21 1 2122 5151 08/27/2014 11:08:36 1 1603 4710

下面有一个表,我需要得到最大日期等于2的行

REMUN_ID    HISTO_ID   DATE_MAJ                 STATUT
2122        7005       08/27/2014 11:10:23        2
1603        5486       08/27/2014 11:10:21        1
2122        5151       08/27/2014 11:08:36        1
1603        4710       08/27/2014 11:08:32        2 
我需要按REMUN_ID获取具有最大日期和组的行 使用此请求的结果

选择remun\u id,max(主要日期)
从历史的高度
按remun_id分组;
结果:

REMUN_ID      DATE_MAJ                 
2122        08/27/2014 11:10:23        
1603        08/27/2014 11:10:21        
我需要调整请求,从这个结果中只获取statut=2的行

我的目的是得到下面的结果,这是第一个只得到statut为2的子查询

REMUN_ID    DATE_MAJ                 
2122        08/27/2014 11:10:23        
PS:如果我使用该条款,我将得到以下结果:

REMUN_ID     DATE_MAJ                 
2122        08/27/2014 11:10:23        
1603        08/27/2014 11:08:32         
这不是我想要的

有什么建议吗? 多谢各位

select remun_id, date_maj
from (
  select r.*, 
         max(date_maj) over (partition by REMUN_ID) as max_date
  from histo_statut_remun r
) 
where date_maj = max_date
  and statut = 2;

SQLFiddle:

SQLServer、Oracle、Postgres、MySQL、DB2、SQLite,什么?你在使用什么?在分组后添加一个
有SUM(statut=2然后1 END的情况下)>0
,我认为在这里使用
MAX(date)
是不安全的,如果你想保证每组只有一行,使用
row_NUMBER()
更好,请看这里-@Bulat:这取决于hb.sara是否希望看到多行,如果相同的
remun_id
有多个日期等于最高日期。