2013-05-09 101 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