안녕하세요. 쿼리 질문 드립니다.
결제데이터와 취소데이터를 같이 보여주고 싶습니다.
다음은 각 테이블의 select 결과 입니다.
결제테이블(order01m)
SELECT
order_id,
user_id,
moid,
pay_success_ts,
total_price,
pay_std
FROM order01m a
WHERE a.user_id = '2RAG9FQH'
ORDER BY pay_success_ts DESC;
결제ID | 사용자ID | 주문번호 | 결제일 | 결제금액 | 결제상태 |
133 |
2RAG9FQH |
202303273K5P6 | 2023-03-27 12:28:18.643 | 670250 | success |
514 |
2RAG9FQH |
20230926H7VW | 2023-09-26 10:00:00.004 | 156750 | success |
285 |
2RAG9FQH |
20230626YD0J | 2023-06-26 10:00:00.011 | 156750 | success |
423 |
2RAG9FQH |
20230923TES2 | 2023-09-23 10:05:00.006 | 156750 | success |
350 |
2RAG9FQH |
202307264J09T | 2023-07-26 10:00:00.072 | 156750 | success |
취소테이블(refn01m)
SELECT
refund_id,
order_id,
moid,
user_id,
refn_start_ts,
refn_price,
refn_msg,
state_cd
FROM refn01m a
WHERE a.user_id = '2RAG9FQH'
ORDER BY refn_start_ts DESC;
취소ID | 결제ID | 주문번호 | 사용자ID | 결제취소일 | 취소금액 | 취소메세지 | 취소구분 |
190 | 133 | 202303273K5P6 | 2RAG9FQH | 2023-10-18 14:14:03.730 | 200000 | 반횐금 | 부분취소 |
200 | 514 | 20230926H7VW | 2RAG9FQH |
2023-10-18 15:08:02.730 |
38500 | 반횐금 | 부분취소 |
제가 원하는 결과는 7월24일부터~ 10월23일 기간으로 검색시
거래일과 취소일 기준으로 아래와 같은 결과가 나오게 하려고 합니다.
취소데이터의 원거래 거래일을 같이 나오게 하고 싶습니다.
주문번호 | 거래일 | 취소일 | 거래금액 | 거래상태 | 사용자ID | 결제ID | 취소ID |
20230926H7VW | 2023-09-26 10:00:00.004 | 2023-10-18 15:08:02.730 | 38500 | 부분취소 | 2RAG9FQH | 514 | 200 |
20230926H7VW | 2023-09-26 10:00:00.004 | 156750 | success | 2RAG9FQH | 514 | ||
20230923TES2 | 2023-09-23 10:05:00.006 | 156750 | success | 2RAG9FQH | 423 | ||
202307264J09T | 2023-07-26 10:00:00.072 | 156750 | success | 2RAG9FQH | 350 | ||
202303273K5P6 | 2023-03-27 12:28:18.643 | 2023-10-18 14:14:03.730 | 670250 | 부분취소 | 2RAG9FQH | 133 | 190 |
도움부탁드립니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SELECT a.moid AS 주문번호 ,a.pay_success_ts AS 거래일 ,b.refn_start_ts AS 취소일 ,a.total_price AS 결제금액 ,b.refn_price AS 취소금액 , CASE WHEN b.state_cd IS NOT NULL THEN b.state_cd ELSE a.pay_std END AS 거래상태 ,a.user_id AS 사용자id ,a.order_id AS 결제id ,b.refund_id AS 취소id FROM order01m a LEFT OUTER JOIN refn01m b ON a.order_id = b.order_id WHERE a.pay_success_ts BETWEEN 조회시작일 AND 조회종료일 |
급하게 작성한거라 정상적으로 나올지 모르겠네요.
참조 정도만 해주시면 될 듯 합니다.
아래처럼 해봤습니다.
1 2 3 4 5 6 | ( select a.moid, a.pay_success_ts, null refn_start_ts, a.total_price, a.user_id, a.pay_std, a.order_id, null refund_id from order01m a) union all ( select a.moid, a.pay_success_ts, b.refn_start_ts, b.refn_price, a.user_id, b.state_cd, a.order_id, b.refund_id from order01m a inner join refn01m b on a.order_id = b.order_id) order by pay_success_ts desc , refn_start_ts desc nulls last |