2013-05-09 103 views
1

我們正在從excel源獲取數據,並保留在Temp表中,並使用帶有存儲過程的臨時表來更新目標表。我在目標表中的'comments'列遇到問題,如果有新的評論出現那麼它應該預先考慮現有評論。這裏的謎題是目標表列的輸入參數的組合,並與comments.Eg沿着某些字段:使用存儲過程的更新表

[Target.Comments] = '[Manager ' + @Getdateparameter +'' + uploaded by + '] ' +Temp.comments + '' + Target.comments. 

當一個新的記錄進來的今天,

Comment = [Manager1 May_9_2013 uploader1] robert is in canada 

如果在其他再次運行一天,沒有及時更新(它應該與現有的評論檢查)的評論則

Comment = [Manager1 May_9_2013 uploader1] robert is in canada 

如果在5月15日的評論的更新,那麼它應該是

Comment = [Manager1 May_15_2013 uploader1] robert is moved away from canada and now he is in US.[Manager1 May_9_2013 uploader1] robert is in canada 

如何做到這一點? 謝謝。

回答

1

你不提供任何實際的信息實際上寫你(你的循環,在一個語句插入等)的代碼,但嘗試這樣的事情:

UPDATE y 
    SET YourComment=t.NewValue+ISNULL('; '+y.YourComment,'') 
    FROM YourTable    y 
     INNER JOIN YourTempTable t On y.PK=t.PK 
    WHERE t.NewValue IS NOT NULL 

我把它編碼爲地方評論之間的「;」,但如果不必要,您可以刪除。將「t.NewValue」替換爲形成新評論的字符串連接。

這實際上是一個模式問題。您應該創建一個評論表,您可以在其中將不同的值分隔到各自的列中,並且每條評論都有一行。在那個時候,你總是插入並且沒有更新或連接。您可以使用視圖或在應用程序處理中將它們組合以供用戶演示。

+0

我寫了遊標內的update語句,更新語句是,更新目標tar設置tar.comments = temp.comments不爲空的情況下,然後'[Manager'+ @Getdateparameter +''+由+上傳] '+ temp.comments +''+ tar.comments其他tar.comments從target_atble結束內部tar加入temmp_table temp on tar.PK = temp.PK.這個工作正常,直到同一評論在不同的日子發佈,然後我們在該字段中有重複的評論。 – 2013-05-09 18:33:08

+0

請告訴我'由'上傳'不是列名?那甚至與那裏的空間一起工作?你不能添加'WHERE YourOldComment NOT LIKE'%'+ YourNewComent +'%'' – 2013-05-09 19:30:43

+0

請不要在遊標中寫入更新或插入或刪除操作!非常不好的習慣,你需要打破。你需要考慮一次不處理一條記錄的集合。 – HLGEM 2013-05-09 20:47:39