쿼리 하나 질문 드립니다.. ㅠ 1 3 3,046

by 손님 [SQL Query] INSERT ALL [2012.03.15 17:56:17]



[테이블 t1] [테이블 t2]
phone1    phone2    time_start   time_end    phone1    phone2    time_start   time_end
-------------------- --------------------  ---------------  --------------    -------------------- --------------------  ---------------  --------------
01011112222  01099998888   09 30 23    09 30 53 01011112222  01099998888   09 30 23    09 31 53
01022223333  01088887777   09 35 21 09 35 29 01022223333  01088887777   09 35 21 09 35 28
01033334444  01077776666   09 36 54    09 38 10  01033334444  01077776666   09 36 54    09 38 10


이 두 테이블의 데이터를 비교하여 일치하는 값을 a1이라는 테이블에,

일치하지 않는 값은 a2라는 테이블에 입력을 하여야 합니다.

하나 조건이 있다면 t1테이블을 기준으로 t2테이블의 time_start나 time_end의 오차가 +-30초까지

는 일치하는 걸로 처리를 합니다.

고수님들의 답변 기다리겠습니다.
by 느훼훼 [2012.03.15 18:15:11]
MERGE INTO에서 INSERT문만 가능하면 한샷으로 가능할거 같고,

안되면 안될거 같은데;;

by 마농 [2012.03.15 18:24:20]
INSERT ALL
WHEN sec1 <= 30 AND sec2 <= 30 THEN
INTO a1(phone1, phone2, time_start, time_end)
VALUES (phone1, phone2, time_start1, time_end1)
ELSE
INTO a2(phone1, phone2, time_start1, time_end1, time_start2, time_end2)
VALUES (phone1, phone2, time_start1, time_end1, time_start2, time_end2)
SELECT t1.phone1
     , t1.phone2
     , t1.time_start time_start1
     , t1.time_end   time_end1
     , t2.time_start time_start2
     , t2.time_end   time_end2 
     , ABS(
       ( TO_DATE(t1.time_start, 'hh24 mi ss')
       - TO_DATE(t2.time_start, 'hh24 mi ss')
       ) * 24 * 60 * 60) sec1
     , ABS
       ( TO_DATE(t1.time_end, 'hh24 mi ss')
       - TO_DATE(t2.time_end, 'hh24 mi ss')
       ) * 24 * 60 * 60) sec2
  FROM t1, t2
 WHERE t1.phone1 = t2.phone1
   AND t1.phone2 = t2.phone2
;

by 느훼훼 [2012.03.15 18:31:32]
아~ 저런식으로도 쓸 수가 있구나.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입