2013-05-18 71 views
0

我有兩個表REPORTRPT_IDRPT_NM更新現有表中的新添加的列

RPT_ID RPT_NM 
2345  UNIVERSAL 
3456  FIELD 
4567  BOILER 
5678  NORTHLAND 
5789  CANADA 

和另一個表JOB其中RPT_ID列被添加其爲外鍵和它的數據是像下面

JOB_NBR DOC_NM    RPT_ID 
23  FIELD_0    NULL 
34  BOILER_2   NULL 
45  BOILER_4   NULL 
56  CANADA-REVISED_5 NULL 
67  UNIVERSAL_23  NULL 

我需要更新此列從REPORT表加入RPT_NMDOC_NMDOC_NM不完全匹配。

+0

歡迎StackOverflow上:如果您發佈的代碼,XML或數據樣本,*** ***請突出顯示文本的那些行編輯器,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以良好地格式化和語法突出顯示它!這樣,你不需要任何那些雜亂的'
'和' '標籤,要麼! –

回答

0
Update JOB set RPT_ID=r.RPT_ID 
FROM REPORT r 
WHERE JOB.DOC_NM like r.RPT_NM+'%' 
0

我假設在作業DOC_NM到第一個「_」或「 - 」報告中的匹配RPT_NM否則該解決方案將無法工作。

UPDATE j 
    SET j.RPT_ID = r.RPT_ID 
FROM REPORT AS r 
    INNER JOIN JOB AS j 
    ON r.RPT_NM = SUBSTRING(j.DOC_NM, 0, CHARINDEX('_', j.DOC_NM)) 
    OR r.RPT_NM = SUBSTRING(j.DOC_NM, 0, CHARINDEX('-', j.DOC_NM)) 
; 

可以沿着使用SUBSTRING功能與CHARINDEX到作業的DOC_NM匹配到第一個「_」或「 - 」以報表的RPT_NM。

這裏是SQLFiddle解決辦法,如果你想發揮與它周圍:http://sqlfiddle.com/#!6/46c3f/9