使用该列中另一行的数据更新单个列

时间:2014-01-23 23:19:10

标签: sql sql-server-2008

我有一个包含4列的数据库,DOC_ID,DOC_CODE,ORIG_DOC_ID和ITEM_ID。 DOC_CODE是I或B,每个I DOC_ID具有显示为ORIG_DOC_ID的对应B 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     |
-----------------------------------------------------------------

我想运行一个UPDATE脚本,该脚本从DOC_IDs中获取带有DOC_CODE B的ITEM_ID,并使用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     |
-----------------------------------------------------------------

任何建议都将不胜感激!谢谢!

1 个答案:

答案 0 :(得分: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