为两个日期之间的每个月季末生成 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
;
输出:
我想为两年之间的每个季度生成年月 (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
;
输出: