WITH COPYT_ AS
(
SELECT generate_series AS LV
FROM generate_series(1,5)
),
COPYL_ AS
(
SELECT REGEXP_SPLIT_TO_ARRAY('202104;202105;202106', ';') AS S_NM
WHERE 1 = 1
)
SELECT S_NM[LV] AS TT
FROM COPYT_ A
INNER JOIN
COPYL_ B
ON A.LV <= ARRAY_LENGTH(B.S_NM, 1)
WHERE 1 = 1
--결과값
202104
202105
202106
제가 하고 싶은건 날짜를 파라미터로 202104 , 202107 요 두가지만 받으면
아래와 같이 나오게 하고 싶습니다.
혹시 위와 같은 방법이 아닌 더 쉬운 방법이 있어도 괜찮습니다.
202104
202105
202106
202107
비효율이 많이 보이네요.
테스트 환경이 안되서 추측성 답변 달아 봅니다.
TO_DATE() 가 날짜 함수이니 ::DATE 를 통한 형변환은 불필요해 보입니다.
알리아스는 date 와 같은 예약어 사용은 피하는 게 좋습니다.
ROW_NUMBER() 부분도 불필요한 부분이구요.
날짜를 하루씩 더해 나가는 부분은 한달씩 더하는 방향으로 개선해 보세요.
불필요한 인라인뷰도 제거할 필요가 있습니다.
(SELECT generate_series(0, 9999) AS IDX) B 부분은
인라인뷰 없이 바로 generate_series 사용하시면 됩니다.