2015-12-07 20 views
0

我有下面的代碼,我需要替換或追加具有相同名稱的字符串。如何才能做到這一點 ?在列中追加類似的字符串

我需要追加或替換列「ATTRIBUTENAME」值與基於IDNUM的整數。

  CREATE TABLE #STATICFILTER 
     (
     IDNUM INTEGER IDENTITY(1,1), 
     ATTRIBUTENAME VARCHAR(MAX), 
      ) 

     Insert into #STATICFILTER 
     Select * from SPLIT((Select ERSBusinessLogic_Inputs from    


     ERSBusinessLogic WHERE ERSBusinessLogic_ID [email protected])) 

     CREATE TABLE #STATICFILTER2 
     (
     IDNUM INTEGER IDENTITY(1,1), 
     ATTRIBUTENAME VARCHAR(MAX), 
     STATICID INTEGER 
     ) 
     Insert into #STATICFILTER2 
     Select M.ATTRIBUTENAME,SL.ERSStatisticType_ID from #STATICFILTER M      
     LEFT join [CoSD].[ERSStatisticType_LU] SL 
     ON M.ATTRIBUTENAME collate SQL_Latin1_General_CP1_CI_AS = 
     SL.ERSStatisticType_Attribute collate SQL_Latin1_General_CP1_CI_AS 

     UPDATE #STATICFILTER2 
     SET ATTRIBUTENAME = ATTRIBUTENAME + CAST(RN AS varchar(1)) FROM 
       (SELECT ROW_NUMBER() OVER(PARTITION BY ATTRIBUTENAME ORDER 
                  BY IDNUM) AS RN 
       FROM #STATICFILTER2) AS NEWATTRIBUTENAME 

Incluidng一些結果每下面的評論....

    #STATICFILTER2 has the below values 

        IDNUM Attributename Inputvalues 
        ------------------------------------ 
         1   IMPORTS  45 
         2   IMPORTS  23 
         3   IMPORTS  28 

當我執行上述更新代碼的獲取更新的值被得到更新爲

    IDNUM Attributename Inputvalues 
        ------------------------------------ 
         1   IMPORTS1  45 
         2   IMPORTS1  23 
         3   IMPORTS1  28 

相反as

    IDNUM Attributename Inputvalues 
        ------------------------------------ 
         1   IMPORTS1  45 
         2   IMPORTS2  23 
         3   IMPORTS3  28 
+0

如果您顯示了一些樣本數據以及預期結果,這將有所幫助。 –

+0

嗨..包括意見根據您的建議...讓我知道如果你需要任何furhter細節.. –

回答

1

我不熟悉SQL Server的UPDATE FROM,所以我不能說出你的更新語句有什麼問題。但是你可以通過使用WITH子句,而不是從解決它:

with upd as 
(
    select s.*, row_number() over (partition by attributename order by idnum) as rn 
    from #staticfilter s 
) 
update upd 
set attributename = attributename + cast(rn as varchar); 

我覺得不同的是,這裏與您創建包含行號的視圖,並更新基礎表,而從你更新表並用FROM查找值,因此對於每一行FROM都將進行評估並生成行號1,因爲它只是您一次查看的一行。但這可能是錯誤的;如前所述,我不熟悉這種語法。

+0

真棒這得到了工作..謝謝 –