2015-10-07 72 views
0

我的查詢將從週一到週日的數據進行分組。我希望能夠將數據從週四到週三進行分組。如何修改以TO_CHAR開頭的兩行?週四到週三的Oracle小組數據

SELECT SOMESTUFF 
    ,WEEKNUM 
    ,WEEKENDING 
FROM (
    SELECT SOMEDETAILS 
     ,TRXDATE 
     ,TO_CHAR(TRXDATE, 'IW') AS WEEKNUM 
     ,TO_CHAR(TRUNC(TRXDATE, 'IW') + 7 - 1/86400, 'MM/DD/YYYY') AS WEEKENDING 
    FROM SOMETABLE 
    ) DETAILS 
INNER JOIN SOMEOTHERTABLES 
GROUP BY SOMEFIELDS 
    ,WEEKNUM 
    ,WEEKENDING 
+0

那麼你想丟棄星期一,星期二,星期六和星期天? –

+0

不,我不想丟棄任何數據,我只想讓我的週週四到週三,而不是週一到週日。 –

+0

現在好了更有意義。 –

回答

1

您可以使用NEXT_DAY(TRXDATE - 1, 'WED')找到你的週末:

TO_CHAR(NEXT_DAY(TRXDATE - 1, 'WED'), 'MM/DD/YYYY') 
TO_CHAR(NEXT_DAY(TRXDATE - 1, 'WED'), 'IW') 

什麼週數,你期待什麼呢?

+0

真棒,謝謝!我認爲今年的第一個週三將是第一週的最後一天。所以我可以稍微改變你的第二行代碼:TO_CHAR(NEXT_DAY(TRXDATE - 1,'WED'),'IW') - 1 AS WEEKNUM –

0

最簡單的解決方法是在日期是星期三 - 星期日時簡單地添加一個到weeknum(或者如果是星期一或星期二則減去)。像這樣的東西會工作

TO_CHAR(TRXDATE, 'IW') + CASE 
          WHEN TO_CHAR(TRXDATE, 'D') > 2 THEN 1 
          ELSE 0 
         END AS WEEKNUM 
相關問題