Sql server SQL Server将NULL值替换为上一行的最后一个值

Sql server SQL Server将NULL值替换为上一行的最后一个值,sql-server,Sql Server,我想使用第一个NULL之前的值替换每个代码组的NULL值: code amount date ------------------------------- A 1500 2013-02-03 A 1800 2013-03-05 A 1300 NULL A 1300 NULL B 1300 2013-05-03 B 1300

我想使用第一个NULL之前的值替换每个代码组的NULL值:

code     amount       date
-------------------------------
 A        1500     2013-02-03
 A        1800     2013-03-05
 A        1300        NULL
 A        1300        NULL
 B        1300     2013-05-03
 B        1300     2013-06-01
 B        1300     2013-07-02
 B        1600        NULL
 B        1300        NULL
 C        1200     2014-07-02
 C        1500     2014-08-05
 C        1700        NULL
 C        1100        NULL
 C        1300        NULL
在这个表中,我想将每个代码的日期的NULL值替换为该代码的最后日期值。e、 g.代码A的日期应如下所示,其他代码的日期应相同

code     amount       date
-----------------------------
 A        1500     2013-02-03
 A        1800     2013-03-05
 A        1300     2013-03-05
 A        1300     2013-03-05
我知道关于这个问题还有其他类似的帖子,但是没有一个能给出上面的结果。我猜是因为为每个特定代码选择最后一个值有点棘手。

怎么样

UPDATE mytable
SET date = date2
FROM mytable o
  CROSS APPLY
    (SELECT MAX(date) date2 FROM mytable i WHERE i.id=o.id group by id) ii
where o.date is null
怎么样

UPDATE mytable
SET date = date2
FROM mytable o
  CROSS APPLY
    (SELECT MAX(date) date2 FROM mytable i WHERE i.id=o.id group by id) ii
where o.date is null

sql Server的版本是什么?类似于从myTable中更新T SET[date]=U.[date]T交叉应用从myTable中选择MAX[date],其中code=T.code U[date]其中T.[date]为空?是否要更新原始表中的空值,或者编写一个SELECT查询,返回不带NULL的结果集?@TheGameiswar it is SQL Server 2014您的SQL Server的版本是什么?类似于从myTable中更新T set[date]=U.[date]之类的内容T交叉应用从myTable中选择MAX[date],其中code=T.code U[date]其中T.[date]为NULL?是否要更新原始表中的NULL值,或者编写一个SELECT查询,返回不带null的结果集?@TheGameiswar it is SQL Server 2014