테이블 A와 B를 조인해서 결과 값을 가져오는 동시에
B 테이블에 가져온 내용을 flag값을 꺽어 줄려고 하는데요..
(스레드를 이용해서 가져오는 데이터를 중복으로 가져오는걸 방지 하기 위해..)
혹시 방법이 있을까요?
ex)
table A : 필드 col1, col2, col3
table B : 필드 seq1, col1, use_yn
A와 B는 1:다 관계 입니다.
오라클은 update for select라는게 있는거 같은데..
MS-SQL은 어떻게 해야 하는지 도저히 모르겠네요..
참고로 서버는 MS-SQL 2012 입니다.
고수님들 답변 부탁드려요..
Comment 2
-
맨즈밤
2013.05.23 19:17
-
김무정_278974
2013.05.24 09:40
답변 감사합니다~!
상당히 많은 도움이 됐습니다~
알려주신 내용을 바탕으로 쿼리를 이리저리 수정하다보니 원하는 결과값이 나오네요~
즐거운 하루 되세요~!!
글적글적........이걸원하시는건지요?
DROP TABLE A_TABLE
DROP TABLE B_TABLE
CREATE TABLE A_TABLE
( SEQ INT IDENTITY(1,1)
,COL1 VARCHAR(10)
,REMK VARCHAR(10) )
CREATE TABLE B_TABLE
( SEQ INT IDENTITY(1,1)
,COL1 VARCHAR(10)
,REMK VARCHAR(10)
,FLAG VARCHAR(10) )
INSERT A_TABLE VALUES('A','EEEEEE')
INSERT A_TABLE VALUES('B','EEEEEE')
INSERT A_TABLE VALUES('C','EEEEEE')
INSERT A_TABLE VALUES('D','EEEEEE')
INSERT A_TABLE VALUES('E','EEEEEE')
INSERT B_TABLE VALUES('D','123123','A')
INSERT B_TABLE VALUES('E','444444','A')
INSERT B_TABLE VALUES('E','555555','B')
INSERT B_TABLE VALUES('F','3452','A')
INSERT B_TABLE VALUES('G','77777','A')
INSERT B_TABLE VALUES('H','32534543','A')
BEGIN TRAN
UPDATE T1
SET REMK=CASE T2.FLAG WHEN 'A' THEN T2.REMK
WHEN 'B' THEN '' END
OUTPUT inserted.* , deleted.*
FROM A_TABLE T1
INNER JOIN B_TABLE T2
ON T1.COL1=T2.COL1
ROLLBACK TRAN
참고로 저렇게 OUTPUT으로 나온결과를 테이블로 입력할수도 있습니다.