2016-08-22 83 views
1

我有兩個日期,比如說2-Mar-1622-Aug-16,我想確定在這段時間內發生了多少次日期25。我怎樣才能創建這樣的查詢?如何在一段時間內發生特定日期

+1

關鍵是根據具有該日期的列進行「group by」。然後你可以得到具有特定值的「事件數」。當你通過日期欄進行組合時,你應該適當地處理時間部分 - 即認爲它是現實的,或者將所有日期的相同時間(12.00.00)等轉換成 – ArunGeorge

+0

它是單行數據。例如:在2016年3月2日到16日22日期間發生25次5次 –

+0

顯示錶格式和樣品數據。 –

回答

0

使用MONTHS_BETWEEN可以獲得兩個日期之間的整個月份數。如果這個值是一個整數,就像在你的例子中那樣,那麼你需要檢查左邊和右邊日期中的給定日期是否爲25.如果是,則將結果加1。

如果日期不同,則需要計算出MONTHS_BETWEEN的樓層,並檢查左邊和右邊的日期之間是否有第25個。例如,在3月23日至4月26日之間,我們通過全月搜索找到了第25位,但自從我們找到第25位後,我們需要添加一位。

此答案假設您已經通過了較早的日期。如果這不準確,那麼你必須知道MONTHS_BETWEEN的結果是否定的,你需要相應地調整這裏描述的想法。

1

以下查詢將爲您提供日期範圍內出現25次的次數。 我寫過內嵌的邏輯。

select substr(DAT,1,2) numbr,count (substr(DAT,1,2)) --- Filtering only day part of date and counting it 
from 
(
--Generating all the dates between 2 dates 
select to_date('02-Mar-2016','dd-mm-yyyy') + LEVEL DAT  
from dual 
connect by level < (select ABS (to_date('02-Mar-2016','dd-mm-yyyy') - to_date('22-Aug-2016','dd-mm-yyyy')) 
        from dual) 
) 
where substr(DAT,1,2) = 25 
group by substr(DAT,1,2); 
相關問題