最长日期小于季度日期



我有一个表日期表。有操作日期列:

operat_day
01.01.2021
2021年1月2日
2021年1月3日
**********
**********
2022年12月31日

可以通过按季度将日期分组来实现这一点。然后找到该季度的MAX日期。

SELECT   ADD_MONTHS(TRUNC(td.oper_day, 'Q'), 3) next_quarter_begin
,MAX(td.oper_day) max_date_prev_quarter
FROM     table_days td
GROUP BY ADD_MONTHS(TRUNC(td.oper_day, 'Q'), 3)
ORDER BY 1

您似乎在问如何找到每个季度的最后一个日期,如果是,则GROUP BYTRUNC到该季度开始的数据,并找到每个季度中的最大日期(因为它将是下一季度开始前的最晚日期(。

如果要确保值来自当前季度之前的季度,则可以添加WHERE过滤器以忽略当前季度或更高季度的值。

像这样:

SELECT TO_CHAR(TRUNC(oper_day, 'Q'), 'YYYY-Q') AS quarter,
MAX(oper_day) AS last_oper_day_in_quarter
FROM   table_name
WHERE  oper_day < TRUNC(SYSDATE, 'Q')
GROUP BY TRUNC(oper_day, 'Q')

对于样本数据:

CREATE TABLE table_name (oper_day) AS
SELECT DATE '2022-01-01' + LEVEL - 1
FROM   DUAL
CONNECT BY DATE '2022-01-01' + LEVEL - 1 <= SYSDATE;

输出:

2022-2年6月30日2022-3年9月30日
QUARTERLAST_OPER_DAY_IN_QUARTER
2022-131-MAR-22

最新更新