2013-05-18 36 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