2014-08-27 58 views
2

有一個表,我需要與具有statut等於2SQL - 通過識別表查找最大日期組

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 使用該請求的結果

select remun_id, max(date_maj) 
from histo_statut_remun 
group by 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:如果我使用的where子句中我會得到這些結果:

REMUN_ID  DATE_MAJ     
2122  08/27/2014 11:10:23   
1603  08/27/2014 11:08:32   

這不是我想要得到的。

有什麼建議嗎? 謝謝

+0

SQL-Server中,甲骨文,Postgres的,MySQL和DB2,SQLite的,什麼?你在用什麼? – 2014-08-27 14:43:31

+0

我正在使用Oracle – 2014-08-27 14:44:39

+0

GROUP BY – Mihai 2014-08-27 14:57:08

回答

4
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:http://sqlfiddle.com/#!4/7eb75/1

+0

後面加上'HAVING SUM(CASE WHEN statut = 2 THEN 1 END)> 0'如果你想保證單獨使用'MAX(date)',我認爲這是不安全的每行使用'ROW_NUMBER()'更好,請看這裏 - http://stackoverflow.com/questions/25774658/sql-join-to-correlated-subquery-where-tables-are-related-by-overlapping-範圍/ 25775149?noredirect = 1#comment40310388_25775149 – Bulat 2014-09-10 21:28:53

+0

@Bulat:這一切都取決於如果hb.sara想要查看多行,如果相同的'remun_id'具有多個日期等於最高。 – 2014-09-10 22:08:30

+0

只是說.... – Bulat 2014-09-10 22:22:35