2013-05-06 18 views
-2

我有,我需要一個字符串表中的一個匹配,並得到顯示該表的匹配記錄的要求更換損壞的數據。請看下面。加入2個表和相匹配的列數據

表A

Column Address  
12333 
W.Main 
street  
Apt  
402  

表B

Column Bad value , good value 
Street    St 

當我加入這兩個左外部表連接我想街從表A由Mainvalue從表B找誰起來後可以更換表B.

截至目前左連接中顯示所有空值和添加額外的組列的,主要的輸出應該像下面。 ,然後在1行中濃縮以下列數據。 像12333 W.Main街公寓402

W.Main 聖 公寓

到目前爲止,我能做到這一點。

declare @id int 
    declare @value varchar(1000) 

    --select dbo.fnNumbersFromStr ('Richmond Plaza - Hwy. 74 E.') 
    IF OBJECT_ID('TempDB..#TEMP') IS NOT NULL 
    BEGIN 
     DROP TABLE #TEMP 
    END 

    create table #Temp 
    (ID int, 
    Value varchar(max)) 

    insert into #Temp 
    SELECT * from MASTER.dbo.SplitWords('12333 W.Main street Apt 402') 

    select * from #Temp 

    select * from dbo.tStreetNameAbbrevations 


    SELECT A.VALUE,B.strLookUpValue FROM #Temp AS A 
    LEFT JOIN tStreetNameAbbrevations AS B 
    ON A.Value = B.strBadValue 
    where B.strLookupvalue is not null 

    UPDATE #Temp 
    set value = (SELECT B.strLookUpValue FROM #Temp AS A 
    LEFT JOIN tStreetNameAbbrevations AS B 
    ON A.Value = B.strBadValue 
    where B.strLookupvalue is not null) 
    where value in (SELECT A.VALUE FROM #Temp AS A 
    LEFT JOIN tStreetNameAbbrevations AS B 
    ON A.Value = B.strBadValue 
    where B.strLookupvalue is not null) 
+0

您需要包括您所查詢的代碼。 – 2013-05-06 18:57:02

回答

0

更改您的UPDATE語句:

UPDATE #Temp 
    SET Value = (SELECT strLookupValue 
       FROM tStreetNameAbbrevations 
       WHERE tStreetNameAbbrevations.strBadValue = #Temp.Value) 
WHERE #Temp.ID IN (SELECT ID 
        FROM #Temp 
         INNER JOIN tStreetNameAbbrevations ON 
          tStreetNameAbbrevations.strBadValue = #Temp.Value) 
+0

這個工作適合你嗎? – 2013-05-07 16:35:23

相關問題