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周;然而,當下周流行時,我希望它顯示爲本週。如何選擇特定的日期範圍?
謝謝!
我試過使用WHERE WEEK = CURRENT_WEEK,但出現錯誤Current_week在使用它的上下文中無效 – OVO
如果您有日曆表,這將非常容易。除此之外,還有不止一種類型的「周」。你想要哪一個? ISO年度周(「第一週」有時會在上一年的12月份開始),自1月1日以來的幾周(上週是1或2天),還是一個「財政周」,哪一個都不受?請注意,一週的第一天是依賴於文化的(儘管我認爲DB2實際上只使用星期一)。 –