sql更新与上个月的数据

时间:2015-01-25 09:03:11

标签: sql sql-server database sql-update

我们有一个数据库,我们有一个列数据错误:它的当前月份记录实际上是下个月的数据。 e.g。

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-11-01记录2014-10-11记录,要么就是不要更新。

对我来说这是一个非常复杂的sql,请帮助。

1 个答案:

答案 0 :(得分:1)

DateAdd函数与recordA上的where条件一起使用。

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

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

  1. 将recordA记录放入临时表中,比如#CorrectHelpTable。确保从源表中绘制主键,因为我们将使用它来映射到新值。

  2. 我在上面的临时表中进行了上述更新。

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

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