【发布时间】:2014-05-09 21:21:48
【问题描述】:
这是我的挑战: 我有一个日志表,每次更改记录时都会添加一条新记录,但会为每条记录中的每个未更改值放置一个 NULL 值。换句话说,仅设置了更改的值,每行中其余未更改的字段仅具有 NULL 值。 现在我想用它上面的不是 NULL 值的值替换每个 NULL 值,如下所示:
源表:Task_log
ID Owner Status Flag
1 Bob Registrar T
2 Sue NULL NULL
3 NULL NULL F
4 Frank Admission T
5 NULL NULL F
6 NULL NULL T
所需的输出表:Task_log
ID Owner Status Flag
1 Bob Registrar T
2 Sue Registrar T
3 Sue Registrar F
4 Frank Admission T
5 Frank Admission F
6 Frank Admission T
如何编写一个查询来生成所需的输出表?
【问题讨论】:
-
您使用的是哪个版本的 SQLServer?
-
为什么您对编写查询来修复垃圾数据而不是修复实际插入记录的代码感兴趣?现在不是使用创可贴的好时机……解决根本问题。
-
我使用的是 SQL Server 2012。我无法访问代码,因此我无法解决根本问题,因此我必须创造性地编写一个很酷的查询来产生所需的输出。
-
我自己没有使用过它们,所以我还不能写出完整的答案,但是看看 LAG, @987654322 @ 和 LAST_VALUE(需要 Sql Server 2012 及更高版本)
标签: sql sql-server sql-server-2012