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 有其他列的数据映射到正确的日期,请尝试以下步骤:
将 recordA 记录放入临时 table,说 #CorrectHelpTable。确保您也从源 table 中提取主键,因为我们将使用它来映射到新值。
在那个临时 table 中按照我上面提到的进行更新。
更新源 table 比较存在的日期并通过主键连接,使用 #CorrectHelpTable 中的值更新第三列(即 3.5 等)。
对于源 table 上不存在的日期,插入尽可能多的记录。在这种情况下,您可能必须决定要为其他列提供什么值。
有一个数据库,我们有一列数据错了,是这样的:它的当月记录实际上是下个月的数据。例如
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 有其他列的数据映射到正确的日期,请尝试以下步骤:
将 recordA 记录放入临时 table,说 #CorrectHelpTable。确保您也从源 table 中提取主键,因为我们将使用它来映射到新值。
在那个临时 table 中按照我上面提到的进行更新。
更新源 table 比较存在的日期并通过主键连接,使用 #CorrectHelpTable 中的值更新第三列(即 3.5 等)。
对于源 table 上不存在的日期,插入尽可能多的记录。在这种情况下,您可能必须决定要为其他列提供什么值。