Oracle中基于SQL实现月度报表的求助(已实现周度报表)
解决方案
针对Oracle数据库生成月度报表的需求,只需调整WHERE子句的日期筛选条件即可,以下是两种简单可行的方案:
方案1:匹配当月完整日期范围
使用TRUNC和LAST_DAY函数锁定当前月份的首尾日期,确保包含当月所有时间的数据:
CAST("AR Origination Date"."Day Cal Date" AS DATE) BETWEEN TRUNC(SYSDATE, 'MM') AND LAST_DAY(SYSDATE)
TRUNC(SYSDATE, 'MM'):返回当前月份的第一天(时间部分为00:00:00)LAST_DAY(SYSDATE):返回当前月份的最后一天(若需严格包含当月所有时刻,可改为TRUNC(LAST_DAY(SYSDATE)) + 1 - INTERVAL '1' SECOND)
方案2:直接匹配月份
通过截断日期到“月份”维度,直接判断是否属于当前月份,写法更简洁:
TRUNC(CAST("AR Origination Date"."Day Cal Date" AS DATE), 'MM') = TRUNC(SYSDATE, 'MM')
TRUNC(date, 'MM')会将日期截断为当月第一天(去除时间部分),只要两个截断后的值相等,就说明数据属于当前月份。
内容的提问来源于stack exchange,提问作者Ogdog13
相关产品推荐
相关产品推荐

