2012-08-06 26 views
1

我正在嘗試爲Oracle SQL編寫一個SQL查詢以檢索特定週期頻率的最後記錄。例如,假設頻率爲季度(我也希望每月和每年都工作),如果有必要,我可以提供宿舍的開始日期和結束日期,但是我需要在每個季度檢索最後一次。我怎樣才能做到這一點?目前爲止,我的運氣有限,無法編寫大量的子查詢。在一段時間內對最後一個條目的SQL查詢

+1

你可以發佈你試過的查詢嗎?如果可能的話,你正在查詢的表結構,所以每個人都有一個更好的理解問題,並給你一個更好的答案 – Yaroslav 2012-08-06 16:20:53

+0

雅羅斯拉夫是對的,你應該發佈樣本表結構。 – gmuhammad 2012-08-06 16:35:06

+0

+1給馬克以很好地使用'partition by'。對於OP:爲什麼不簡單地按時間範圍進行限制並選擇max(id)的行? – alfasin 2012-08-06 18:32:33

回答

2

嘗試類似:

select * from 
(select t.*, 
     row_number() over (partition by trunc(date_field, 'MON') 
          order by date_field desc) rn 
from my_table t) 
where rn = 1 

幾個月。 (爲季度或年度的trunc子句中使用,而不是「MON」 Q'或「Y」。)

0
SELECT col1, col2, col3...colN 
FROM TableA 
WHERE (colX = (SELECT  MAX(Date) AS LastDate 
    FROM   TableA 
    WHERE  QuarterDate Between (BeginningDate AND EndingDate) 

COLX是日期列,它是你的約會,你需要進行檢查,如果在本季度。

我認爲這應該工作。

相關問題