2015-11-02 18 views
0
SELECT TYPE, TERMINAL, PERIOD_NUMBER, WEEK, DM FROM 
(SELECT 'ACTUAL' AS TYPE, TERMINAL, PERIOD_NUMBER, "WEEK", SUM(CASE WHEN TYPE = 'REVENUE' THEN TOTAL ELSE 0 END - CASE WHEN TYPE = 'EXPENSE' THEN TOTAL ELSE 0 END) DM FROM BT_CU_DM_TERMINAL 
WHERE TERMINAL NOT IN ('99','88') 
GROUP BY TERMINAL, PERIOD_NUMBER, "WEEK" 
UNION 
SELECT 'BUDGET' AS TYPE, RIGHT(GL_ACCT_ID, 2) TERMINAL, PERIOD_NUMBER, WEEK(CURRENT DATE - 5 DAYS) "WEEK", 
CASE WHEN WEEK(CURRENT DATE - 5 DAYS) IN (40, 41, 42, 43, 44, 53,1,2,3,4,5, 14,15,16,17,18,27,28,29,30,31) THEN BUDGET_AMT/5 ELSE BUDGET_AMT/4 END DM FROM GL_BUDGETS WHERE 
FISCAL_YEAR_CODE = '2015' AND GL_ACCT_ID LIKE '01-6999-%' 
ORDER BY PERIOD_NUMBER, WEEK, TERMINAL) 

我正在使用DB2,並試圖找到一個適當的WHERE子句,以便動態獲取當前的一週;無論何時使用此聲明。例如,我們在第44周;然而,當下周流行時,我希望它顯示爲本週。如何選擇特定的日期範圍?

謝謝!

+0

我試過使用WHERE WEEK = CURRENT_WEEK,但出現錯誤Current_week在使用它的上下文中無效 – OVO

+0

如果您有日曆表,這將非常容易。除此之外,還有不止一種類型的「周」。你想要哪一個? ISO年度周(「第一週」有時會在上一年的12月份開始),自1月1日以來的幾周(上週是1或2天),還是一個「財政周」,哪一個都不受?請注意,一週的第一天是依賴於文化的(儘管我認爲DB2實際上只使用星期一)。 –

回答

0

本週可通過week(current date)獲得。

+0

對,不幸的是我已經返回一週的結果;但是我需要顯示當前的星期數據! – OVO

+0

在上面的評論中,您要求提供「當前周」。也許回過頭來編輯這個問題更重要,你究竟在問什麼。你想重寫查詢嗎?你想改變整個WHERE子句嗎? ... –

+0

道歉,我目前正在提供顯示投影和預算的數據,它基於兩件事情:一週到一天和一個月。我已經包裝了我的兩個前面的子句來得出結果。不過,我想進一步指定我正在使用哪個星期! – OVO

相關問題