sql 更新上月数据

sql update with previous month data

有一个数据库,我们有一列数据错了,是这样的:它的当月记录实际上是下个月的数据。例如

recordA     2014-12-01  3.5
recordB     2014-12-01  1.5
recordC     2014-12-01  5.5
recordD     2014-12-01  3.5


recordB     2014-11-01  3.8
recordC     2014-11-01  6.7
recordD     2014-11-01  1.1

recordA     2014-10-01  8.5
recordB     2014-10-01  3.5
recordC     2014-10-01  4.4
recordD     2014-10-01  1.5

...

所以基本上,目前 2014-12-01 数据实际上是 2015-01-01 数据,2014-11-01 数据实际上是 2014-12-01 数据,我如何用上个月的记录更新这些记录?某个特定记录也可能缺少一些月份。例如。 recordA 2014-11-01 丢失,在这种情况下,要么用 2014-10-11 记录创建一个新的 2014-11-01 记录,要么就不要更新。

这对我来说很复杂sql,请帮忙。

在 recordA 上使用带有 where 条件的 DateAdd 函数。

Update Table_Name_Here set DateField_Name_Here = DateAdd(month, 1, DateField_Name_Here) Where RecordTypeField_Name_Here = 'recordA';

如果 table 有其他列的数据映射到正确的日期,请尝试以下步骤:

  1. 将 recordA 记录放入临时 table,说 #CorrectHelpTable。确保您也从源 table 中提取主键,因为我们将使用它来映射到新值。

  2. 在那个临时 table 中按照我上面提到的进行更新。

  3. 更新源 table 比较存在的日期并通过主键连接,使用 #CorrectHelpTable 中的值更新第三列(即 3.5 等)。

  4. 对于源 table 上不存在的日期,插入尽可能多的记录。在这种情况下,您可能必须决定要为其他列提供什么值。