select * from (
--转化成周一去重
select distinct trunc(t.day,'iw') as mon from (
--获取本月所有日期集合
SELECT trunc(sysdate, 'mm') + LEVEL - 1 DAY
FROM DUAL
CONNECT BY trunc(sysdate, 'mm') + LEVEL - 1 <=
last_day(trunc(sysdate))
)t
)a
--移除非本月的周一
where trunc(a.mon, 'mm') = trunc(sysdate, 'mm')
ORDER BY MON
注:
trunc(sysdate,‘iw’) 语句可以获取本周周一的日期 (date类型)
trunc(sysdate,‘iw’) +1 可以获取本周周二的日期。
以此类推
(可以把sysdate换成其它时间)
本文介绍了一种SQL技巧,通过使用TRUNC函数与LEVEL结合CONNECT BY来生成当前月份的所有日期集合,并利用TRUNC函数的'iw'参数实现按周去重,特别适用于需要进行每周数据汇总或分析的场景。
823

被折叠的 条评论
为什么被折叠?



