周四至周三的Oracle组数据

时间:2015-10-07 17:42:23

标签: sql oracle11g

我的查询将数据从星期一到星期日分组。我希望能够从周四到周三对数据进行分组。如何改变以TO_CHAR开头的两行呢?

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

2 个答案:

答案 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')

您期望什么周数?

答案 1 :(得分:0)

最简单的解决方案是在日期为周三至周日时将一个添加到周末(或者如果是周一或周二则减去)。像这样的东西会起作用

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