我的查询将数据从星期一到星期日分组。我希望能够从周四到周三对数据进行分组。如何改变以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
答案 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