by visca구루비 [Oracle 기초] Insert Select empty [2021.04.06 14:01:40]
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 문입니다
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. 불필요한 테이블 조인
- 사용되지 않는 테이블을 왜 조인하죠?
- 조인 빼도 될 것 같습니다.
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' ;