2013-04-02 71 views
-3

我需要得到每個月的最大add_dtm,我有這個集合。sql最大日期從結果集

location, read_time,   read_amt, add_dtm 
1,  2/7/2013 9:00:00, 5,  2/8/2013 6:00:00 
1,  3/20/2013 8:00:00, 5,  3/20/2013 6:30:00 
1,  2/20/2013 8:20:00, 5,  2/20/2013 6:35:00 
1,  2/7/2013 9:00:00, 5,  2/8/2013 6:00:00 

所以基本上我只是需要我的結果第二和第三行。

+0

這並不難。 [嘗試一下。](http://whathaveyoutried.com)拿起一本書或看看一些SQL教程。 – 2013-04-02 18:29:34

+0

請通過添加適當的標記(Oracle,SQL Server,MySQL等)來指定您要定位的RDBMS。可能會有利用不被普遍支持的語言或產品功能的答案。此外,通過使用特定的RDBMS標記它,您的問題可能會得到更好的回答的人的關注 – Taryn

+0

謝謝傑克,真的很有幫助。它是預言。 – Fonzy

回答

1

由於使用的是Oracle,你應該能夠使用窗口功能,如row_number()

select location, 
    read_time, 
    read_amt, 
    add_dtm 
from 
(
    select location, read_time, read_amt, add_dtm, 
    row_number() over(partition by location, to_char(add_dtm, 'MM-YYYY') 
         order by add_dtm desc) rn 
    from yourtable 
) 
where rn = 1 

SQL Fiddle with Demo

或者你可以使用一個子查詢獲取max(add_dtm)每個location,然後該結果加入回你的表:

select t1.location, t1.read_time, 
    t1.read_amt, t1.add_dtm 
from yourtable t1 
inner join 
(
    select location, max(add_dtm) MaxDate 
    from yourtable 
    group by location, to_char(add_dtm, 'MM-YYYY') 
) t2 
    on t1.location = t2.location 
    and t1.add_dtm = t2.maxdate 

SQL Fiddle with Demo

這兩個查詢的關鍵在於您按月份和年份對數據進行分組以獲取最大日期。

+0

+1,祝賀傳奇徽章,你值得擁有它:) –

+0

@MahmoudGamal謝謝你很難得到! – Taryn

相關問題