SQL:用最后一次观察代替NAs

时间:2012-07-18 14:10:05

标签: sql-server sql-server-2012

我有一张像这样的巨型桌子:

Date   Price1   Price2
1      13       14.9
2      13.1     NULL
3      NULL     14
4      NULL     14.5
5      13       14

我想填写NA,以便SQL中的表格如下所示:

Date   Price1   Price2
1      13       14.9
2      13.1     14.9
3      13.1     14
4      13.1     14.5
5      13       14

我对SQL很陌生,所以请原谅。我在这里搜索过,看起来你可以在R中做到这一点,但我该怎么做呢。

我正在使用Microsoft SQL Server Management。此外,我似乎无法想象如何正确插入一个表,他们不会让我发布图片。所以,抱歉格式化。

1 个答案:

答案 0 :(得分:1)

试试这个:

UPDATE a
  SET a.Price1 = b.Price1
  FROM <YOUR-TABLE> a CROSS APPLY 
    (
        SELECT TOP 1 Price1
          FROM <YOUR-TABLE> b
        WHERE a.Date > b.Date
          AND Price1 <> 'NA'
            ORDER BY b.Date DESC
    ) b

    UPDATE a
  SET a.Price2 = b.Price2
  FROM <YOUR-TABLE> a CROSS APPLY 
    (
        SELECT TOP 1 Price2
          FROM <YOUR-TABLE> b
        WHERE a.Date > b.Date
          AND Price2 <> 'NA'
            ORDER BY b.Date DESC
    ) b