使用日志表中的数据更新日志表

时间:2014-08-04 14:40:29

标签: sql sql-server

由于最近对最近的数据库进行了更新,我遇到了一个奇怪的问题。我有两个表,tVehicleDeal表和tVehicleLog表。我们进行了“迁移”,这意味着我们创建了一个应用程序,将数据从旧数据库传输到更多关系数据库。这个过程花了一段时间,但它结束了,一切似乎都很好。现在发生的是,无论何时更新tVehicleDeal,相应的信息都会插入到tVehicleLog中。发生的问题是..我运行了一个脚本,它将tVehicleDeal中的当前交易更新为tVehicleLog中的最新日志。我在我的脚本中犯了一个错误,并没有正确更新tVehicleDeal中的所有当前交易。因此,当用户更新tVehicleDeal中的活动交易时,并非所有信息都插入到tVehicleLog中。我需要找到一种方法来更新最新的条目,其中包含过去条目中的一些字段,例如标题的日期。一些交易有多达20个不同的日志,而有些可能只有2或3.我找到了这个链接here但我不是100%肯定这是我正在寻找的。我尝试过类似的东西,但是我无法使用该页面上的示例获得任何工作。任何其他想法都会有很大帮助!

编辑:

我无法弄清楚如何更新tVehicleLog中的列。例如:

在tVehicleLog表中,特定DealID有6个结果。

第一到第四行中没有标题日期,但第五行确实有一个标题日期。

我无法弄清楚如何根据具有标题日期的第5行更新该dealID的第6行的标题列。

上面提供的链接看起来像我正在寻找的东西,但我无法让这个解决方案起作用。

1 个答案:

答案 0 :(得分:1)

基于您问题中的这一行,

  

我无法弄清楚如何更新第6行的标题列   该dealID基于第5行确实具有标题日期。

这似乎应该可以解决您的问题。它只是为了解决这个特定的场景而编写的。如果存在与此不完全相同的其他情况,则可能必须进行调整。如果我不了解您的问题,请发表进一步的澄清。

UPDATE L1
  SET TitleDate=L2.TitleDate
FROM tVehicleLog L1
INNER JOIN tVehicleLog L2
  ON L1.DealID=L2.DealID
  AND L2.TitleDate IS NOT NULL
WHERE L1.<PrimaryKeyColumn>=@ThePrimaryKeyColumnOfTheRowYouWantToUpdate