SYBASE DELETE 쿼리문 질문입니다. 0 4 1,086

by 크리스트 [DB 기타] [2016.10.18 10:05:12]


계속 해결방법을 찾으면서 하다가 처리하지 못하여 질문을 드립니다.

현재 SYBASE DB를 사용중이고 

inohis 라는 테이블의 데이터를 삭제하려고 합니다.

iobit trn_date trn_seq ino_seq matrial_no product color btest weight yardmeter in_date remark itm_gb
1 20161018 1 3 702 3 3 3 3 3     1
1 20161018 1 2 701 2 2 2 2 2     1
1 20161018 1 1 700 1 1 1 1 1     1
1 20161018 1 4 703 4 4 4 4 0     1
1 20161018 1 5 704 5 5 5 5 0     1
2 20161130 1 1 700 1 1 1 1   201610    
2 20161130 1 2 701 2 2 2 2   201610    
2 20161130 1 3 702 3 3 3 3   201610    

iobit 의 1이 입고이고 2가 출고입니다.

출고를 입력을 하면 in_date에 해당 Matrial_no의  left(trn_date,6)이 들어가게 됩니다. 

삭제하고자하는 날짜를 20161130로 입력했을 경우 빨간색 행들이 삭제가 되도록 하고 싶습니다.

키는 iobit, trn_date, trn_seq, ino_seq 이지만 무시해도 될 것 같습니다.

inohis 테이블을 self join해서 삭제를 할려고 했는데 잘 되지 않아 질문을 올립니다.

 

 

by 마농 [2016.10.18 11:04:17]
--DELETE FROM inohis
SELECT * FROM inohis
 WHERE (iobit = '2' AND trn_date = '20161130')
    OR (iobit, trn_date, trn_seq, ino_seq)
    IN (SELECT b.iobit, b.trn_date, b.trn_seq, b.ino_seq
          FROM inohis a
         INNER JOIN inohis b
            ON b.iobit    = '1'
           AND b.trn_date LIKE CONCAT(a.in_date, '%')
           AND b.trn_seq  = a.trn_seq
           AND b.ino_seq  = a.ino_seq
         WHERE a.iobit    = '2'
           AND a.trn_date = '20161130'
        )
;

 


by 크리스트 [2016.10.18 13:38:25]

마농님 답변 감사합니다.

답변해주신 쿼리를 사용했을 때

실행이 되지 않습니다.

Syntax error or access violation: near ',' in ... OR (iobit[,] trn_date, trn_seq,... 라고 뜨네요..


by 마농 [2016.10.18 14:15:37]

IN 절에서 다중컬럼을 지원하지 않는 모양이네요.
Exists 구문으로 바꿔봤습니다.
 

--DELETE FROM inohis b
SELECT * FROM inohis b
 WHERE (iobit = '2' AND trn_date = '20161130')
    OR (iobit = '1' AND EXISTS
       (SELECT 1
          FROM inohis a
         WHERE a.iobit    = '2'
           AND a.trn_date = '20161130'
           AND a.trn_seq  = b.trn_seq
           AND a.ino_seq  = b.ino_seq
           AND a.in_date  = LEFT(b.trn_date, 6)
        )
        )
;

 


by 크리스트 [2016.10.19 15:15:30]

마농님 쿼리를 참조로 원하는 결과를 만들어보겠습니다 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입