안녕하세요.
한달에 한번 실행되는 스케줄에 해당하는 항목들을 가져오려고 합니다.
postgresql이고 도움 부탁드립니다.
order_id = 주문번호, use_term=사용개월 , pay_success_ts=결제일, reg_ts=생성일, start_dy=이용시작일, expiration_dy=이용종료일 입니다.
1 2 3 4 5 6 | SELECT order_id, use_term, pay_success_ts, reg_ts, start_dy, expiration_dy FROM tb_strg_order01m a WHERE a.pay_gubun = 'P' AND a.pay_std = 'success' AND to_date(a.expiration_dy, 'YYYYMMDD' ) > to_date(to_char( '20231101' :: date , 'YYYYMMDD' ), 'YYYYMMDD' ) AND use_term > '1' |
조회 결과는 아래와 같습니다.
order_id | use_term | pay_success_ts | reg_ts | start_dy | expiration_dy |
224 | 6 | 2023-05-23 13:16:48.300 | 2023-05-23 13:16:48.304 | 20230525 | 20231124 |
235 | 6 | 2023-06-01 15:31:53.270 | 2023-06-01 15:31:53.273 | 20230601 | 20231201 |
450 | 3 | 2023-09-03 16:10:11.692 | 2023-09-03 16:10:11.696 | 20230909 | 20231208 |
72 | 12 | 2023-02-10 21:22:54.750 | 2023-02-10 21:22:54.755 | 20230211 | 20240210 |
416 | 3 | 2023-08-23 12:21:10.407 | 2023-08-23 12:21:10.411 | 20230825 | 20231124 |
현재월이 11월이라고 가정 했을때
이용시작일과 이용종료일에 포함된 데이터만 가져오면 되는데
order_id 224와 416은 이미 10월달에 결제가 되었을테니 빼고 가져와야 됩니다.
그래서 제가 원하는 데이터는 아래와 같습니다.
order_id | use_term | pay_success_ts | reg_ts | start_dy | expiration_dy |
235 | 6 | 2023-06-01 15:31:53.270 | 2023-06-01 15:31:53.273 | 20230601 | 20231201 |
450 | 3 | 2023-09-03 16:10:11.692 | 2023-09-03 16:10:11.696 | 20230909 | 20231208 |
72 | 12 | 2023-02-10 21:22:54.750 | 2023-02-10 21:22:54.755 | 20230211 | 20240210 |
도움 부탁드립니다.
답변 감사합니다. 좀더 자세하게 설명 드려야 했는데 죄송합니다.
224의 경우 tb_strg_order01m 테이블은 이미 결제완료된 데이터만 있는 테이블 입니다.
use_term값이 6이면 6개월 치를 미리 결제완료 라고 생각하시면 될것같습니다.
그 6개월치를 1개월씩 나누어 다른 테이블에 저장하려고 합니다.
5월25일부터~11월24일이 6개월이 맞습니다.
현재 스케줄은 매달1일 한번만 돌아 갑니다.
그래서 월별로 1개월씩 조회된 데이터를 저장하려고 합니다.
224의 경우 5월25일은 결제일이니 제외하고
6월1일, 7월1일, 8월1일, 9월1일, 10월1일 이렇게 6개월 치를 1개월씩 만들려고 합니다.
설명이 부족하면 말씀해주세요. ㅠㅠ
그리고
AND a.expiration_dy >= '20231201' 이때에 같은 달인 12월은 제외 할 수 있는 방법이 있을까요?
답변 정말 감사드립니다.