Home > Blockchain >  Generate YYYYMM for each month quarter end between two dates
Generate YYYYMM for each month quarter end between two dates

Time:05-17

I want to generate Yearmonth (YYYYMM) for each quarters between two years and associate a rank number for each line.

Date_Begin Date_End
2021 2023

I retrieve a yearmonthrank as below:

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

Which returns:

period_rank
1
2
...
12

Now, I have no idea how I could generate this output for yearmonth part?

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

Thank you for your time!

CodePudding user response:

Try this one:

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

output:

enter image description here

  • Related