2014-01-23 4 views
0

DOC_ID, DOC_CODE, ORIG_DOC_ID 및 ITEM_ID 열이 4 개인 DB가 있습니다. DOC_CODE는 I 또는 B이며 각 I DOC_ID는 해당 B DOC_ID가 ORIG_DOC_ID로 표시됩니다. 예 :단일 열을 해당 열의 다른 행의 데이터로 업데이트하십시오.

----------------------------------------------------------------- 
| DOC_ID  | ORIG_DOC_ID | DOC_CODE | ITEM_ID | 
----------------------------------------------------------------- 
|  33456  | 44567   |  I  |  NULL | 
|  44567  | NULL   |  B  |  254  | 
|  45785  | 67584   |  I  |  NULL | 
|  67584  | NULL   |  B  |  234  | 
----------------------------------------------------------------- 

내가 DOC_CODE B와 DOC_IDs에서 ITEM_IDs를 취하는 UPDATE 스크립트를 실행하려면,하고 스크립트 후, DOC_CODE I. 그래서 테이블에 해당 DOC_ID의 ITEM_ID 칼럼에 삽입, 것 모양은 다음과 같습니다.

----------------------------------------------------------------- 
| DOC_ID  | ORIG_DOC_ID | DOC_CODE | ITEM_ID | 
----------------------------------------------------------------- 
|  33456  | 44567   |  I  |  254  | 
|  44567  | NULL   |  B  |  254  | 
|  45785  | 67584   |  I  |  234  | 
|  67584  | NULL   |  B  |  234  | 
----------------------------------------------------------------- 

모든 조언을 주시면 감사하겠습니다. 감사!

+0

이 작업을 받으셨어요? – Sparky

+0

예 했어요! 죄송합니다. 나는이 대답을 받아 들였다고 말했습니다. 도움 주셔서 대단히 감사합니다! :) – tsHunter

+1

아무 문제 없으니, 다행이라고 생각합니다. – Sparky

답변

1

이 시도 :

update TableOne set item_id = xx.Item_id 
from  
(  
select doc_id,item_id 
from TableOne 
where Doc_Code='B' 
) xx where TableOne.Orig_doc_id=xx.doc_id 

SQL 바이올린을 : http://www.sqlfiddle.com/#!3/1a442/2

관련 문제