重要統計數據: Oracle 11i 我沒有權限創建表或任何類型的寫入權限。Oracle SQL將每天的所有打開任務累加起來
目標:
我需要創建一個查詢,將着眼於過去12個月的行動,並計數(每天)許多行爲是如何被打開的每一天。這必須是沒有硬編碼值的動態查詢。
我定義一個「打開」項目的方式是,它在有問題的日期當天或之前獲得批准,並在當天或之後發佈。
我曾嘗試:
我發現這裏一個類似的問題,這是不是非常好措辭,並沒有答案。 SQL count open tasks each day
這導致另一個問題有一些不同的想法,但不是我正在尋找的格式,因爲我想結束很多行。 SQL Count Of Open Orders Each Day Between Two Dates
下面是我的代碼到目前爲止是接近,但排除了一些結果,我會在代碼後面描述。
SELECT I.aggDate ,
eri.organization_id ORG,
COUNT((
CASE
WHEN OSD.date_approved < I.aggDate + interval '1' DAY
AND osd.date_released > I.aggDate - interval '1' DAY
THEN 1
END)) Items_in_DC
FROM mm_oracle_sig_dates osd ,
ENG_REVISED_ITEMS ERI ,
(SELECT DISTINCT OSD.date_approved aggDate
FROM mm_oracle_sig_dates osd
WHERE OSD.date_approved >=TRUNC(sysdate) - interval '12' MONTH
) I
WHERE i.aggdate = osd.date_approved
and eri.change_notice = osd.ecn_num
GROUP BY I.aggdate ,
eri.organization_id;
我相信這個問題是「i.aggdate = osd.date_approved」因爲這會導致查詢,以只添加批准當天有問題的項目,我想算批准日或之前的所有項目有問題的那一天。我需要做一些明確的連接,以避免外部(我認爲)加入,只是創建混亂。
在FROM子句中選擇的目的是創建一個至少有一個項目被批准的天數列表,因爲我知道每個工作日至少會有一個項目被批准。 我的意圖是,然後用每天的計數填充該日期列表。
最後總結式提問:
如何創建日期的數組,然後在查詢由該系統具有計數時日期後或等於日期1(批准日期)填寫和之前或等於date2(發佈日期)。
我提前感謝您閱讀這個長長的問題。我更加感謝所有建設性的反饋和想法。
乾杯,
Gordon,謝謝你的幫助。這感覺就像是正確的方向,但我得到的結果比它們應該大兩個數量級。感覺像缺少的一點是計數包圍是不正確的。似乎這包括既被批准也被釋放的項目,而不需要在批准之前或之後批准,或者批准之前或之後批准。我誤解了這一點,並且包圍是以某種方式隱含的? – Corey
@Corey。 。 。你確定你在第二個子查詢中有'inc'的負號嗎?是否有可能在SQL Fiddle中顯示問題? –
戈登,對於長時間的耽擱感到抱歉,我因感恩節假期休假。我開始把這東西放在sql小提琴中,但它給了我錯誤消息,說明每一行中的列數對於直接的CSV數據是錯誤的。今天晚些時候我會繼續努力。 – Corey