我有一段腳本,可以告訴我「按時交付」或「OTD」基於當月的情況。從本質上講,它立即告訴我們是否在我們的承諾日期之前或之後運送了我們的材料。如何按月份對數據結果進行分組
我現在要做的是創建一個新腳本,將其與我們的GLPERIODS表綁定,以便我可以一目瞭然地顯示每年的「OTD」是什麼。當我運行這個新的時候,我得到正確的時期(1月 - 12月),但我的OTD計算沒有按期間分組。相反,它們都是相同的,我認爲它是我們系統中所有數據的平均值。
我會在這裏發佈腳本以及結果。 (編輯:我想我不能發佈結果,因爲它不會讓我發佈圖片)任何幫助將不勝感激。謝謝,順便說一句,我不是程序員,只是偶爾從事這些工作的人來獲取我們之後的數據。
Select "month",
OTD
From (Select Round((1 - ("Late"/"All")), 3) As OTD
From (Select Round(Count(V_RELEASES_COMB.ACTUAL_SHIPDATE), 2) As "Late"
From V_RELEASES_COMB,
GLPERIODS
Where To_Char(V_RELEASES_COMB.ACTUAL_SHIPDATE, 'MM/YYYY') =
To_Char(GLPERIODS.START_DATE, 'MM/YYYY') And
V_RELEASES_COMB.ACTUAL_SHIPDATE > V_RELEASES_COMB.PROMISE_DATE And
V_RELEASES_COMB.ITEMNO Is Not Null And V_RELEASES_COMB.CUMM_SHIPPED > 0),
(Select Case
When Round(Count(V_RELEASES_COMB.ACTUAL_SHIPDATE), 2) = 0 Then 1
Else Round(Count(V_RELEASES_COMB.ACTUAL_SHIPDATE), 2) End As "All"
From V_RELEASES_COMB,
GLPERIODS
Where To_Char(V_RELEASES_COMB.ACTUAL_SHIPDATE, 'MM/YYYY') =
To_Char(GLPERIODS.START_DATE, 'MM/YYYY') And V_RELEASES_COMB.ITEMNO Is Not
Null And V_RELEASES_COMB.CUMM_SHIPPED > 0)),
(Select To_Char(GLPERIODS.START_DATE, 'MONTH') As "month"
From GLPERIODS
Where Extract(Year From GLPERIODS.START_DATE) = Extract(Year From SysDate))
好的,謝謝你的幫助!這裏是你的輸入編輯的腳本中加入:
Select "month",
OTD
From (Select trunc(g.start_date, 'Month') mth,
round (1 - (count(
case when v.ACTUAL_SHIPDATE > v.PROMISE_DATE And v.ITEMNO Is Not Null
And v.CUMM_SHIPPED > 0 then V.ACTUAL_SHIPDATE end)
/greatest(Count(
case when v.ITEMNO Is Not Null And v.CUMM_SHIPPED > 0 then V.ACTUAL_SHIPDATE end
), 1)) , 3) OTD
from glperiods g
left join v_releases_comb v
on trunc(v.ACTUAL_SHIPDATE, 'Month') = trunc(g.start_date, 'Month')
group by trunc(g.start_date, 'Month')),
(Select To_Char(GLPERIODS.START_DATE, 'MONTH') As "month"
From GLPERIODS
Where Extract(Year From GLPERIODS.START_DATE) = Extract(Year From SysDate))
結果看起來很有前途,但這裏所發生的事情:
月OTD 一月0.956 月.875 月0.359 1月1日 1月1日 年1月1日 0.978 月.562 月.875 2月1日 2月1日
等 這個持續了所有月份。
以上是表格格式,但我不知道如何在此網站上發佈表格。我希望我只能上傳一張照片,但它不會讓我。
除了上述信息,我添加到我的帖子,我發現,如果我通過代碼刪除組,我得到一個有12個月的好桌子。問題在於所有12個月的OTD值都是一樣的。如果我通過代碼離開團隊,我會得到約1月60日,2月60日等,雖然他們似乎有一些不同的OTD值。 – 2015-04-02 19:01:05
不要刪除GROUP BY :)不要再爲GLPERIODS添加子查詢:)它會產生交叉連接,您將有許多不必要的行。只需運行我的查詢,我幾乎沒有修改它,只爲當前年份日期添加'WHERE'子句。 – 2015-04-02 19:06:16
哦,你是一個天才。這工作!如果沒有數據,是否有辦法使OTD值爲零(0)?現在它顯示一個1.再次感謝你! – 2015-04-02 19:12:14