为两个日期之间的每个月季末生成 YYYYMM

Generate YYYYMM for each month quarter end between two dates

我想为两年之间的每个季度生成年月 (YYYYMM) 并为每一行关联一个排名数字。

Date_Begin Date_End
2021 2023

我检索了一个年月排名如下:

SELECT  GENERATE_ARRAY(1,((Date_End-Date_Begin )*4)) as period_rank
...
UNNEST(period_rank) AS period_yearmonthrank

哪个returns:

period_rank
1
2
...
12

现在,我不知道如何为年月部分生成此输出?

period_rank yearmonth
1 202103
2 202106
3 202109
4 202112
5 202203
6 202206
7 202209
8 202212
9 202303
10 202306
11 202309
12 202312

感谢您的宝贵时间!

试试这个:

SELECT RANK() OVER (ORDER BY y, q) AS period_rank,
       FORMAT('%d%02d', y, q) AS yearmonth, 
  FROM UNNEST(GENERATE_ARRAY(2021, 2023)) y, UNNEST([3, 6, 9, 12]) q
;

输出: