by visca구루비 [Oracle 기초] Insert Select empty [2021.04.06 14:01:40]
1 2 3 4 5 6 7 8 9 | select '20210331' as date , A.a, A.b A.c, A.d from A m left join B on A. key = B. key where A. date between to_timestamp( '20210331' , 'YYYYMMDD' ) and to_timestamp( '20210331' , 'YYYYMMDD' ) + interval '1 day' |
위와 같이 select를 하고 해당 결과를 Insert하는 방식으로 쿼리를 작성하였습니다
그때 select의 row가 빈값(결과없음)으로 나왔을 때 Insert하는 방법은 없을까요??
아래 쿼리는 제가 작성한 Insert 문입니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | insert into t_member_stats ( date , b, c, d, e ) select '20210331' as date , A.a, A.b A.c, A.d from A m left join B on A. key = B. key where A. date between to_timestamp( '20210331' , 'YYYYMMDD' ) and to_timestamp( '20210331' , 'YYYYMMDD' ) + interval '1 day' |
1. 조회 테이블의 일자 컬럼이 timestamp 군요.
- 입력 대상 테이블의 일자 컬럼은 varchar(8) 인가요?
- 자료형을 일치시켜 주는 것이 중요합니다.
2. 불필요한 테이블 조인
- 사용되지 않는 테이블을 왜 조인하죠?
- 조인 빼도 될 것 같습니다.
1 2 3 4 5 6 7 8 9 10 | SELECT TO_CHAR(x.dt, 'yyyymmdd' ) dt , a.a , a.b , a.c , a.d FROM ( SELECT TO_TIMESTAMP( '20210331' , 'yyyymmdd' ) dt) x LEFT OUTER JOIN a ON a.dt >= x.dt AND a.dt < x.dt + INTERVAL '1 day' ; |