Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL:用最后一次观察替换NAs_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql server SQL:用最后一次观察替换NAs

Sql server SQL:用最后一次观察替换NAs,sql-server,sql-server-2012,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 我希望填充NAs,以便SQL中的表如下所示: Date Price1 Price2 1 13 14.9 2 13.1 14.9 3 13.1 14 4

我有一张像这样的大桌子:

Date   Price1   Price2
1      13       14.9
2      13.1     NULL
3      NULL     14
4      NULL     14.5
5      13       14
我希望填充NAs,以便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中这样做,但是我应该如何在SQL中这样做呢


我正在使用Microsoft SQL Server管理。此外,我似乎不知道如何正确地插入一个表,他们不让我张贴图片。因此,很抱歉设置了格式。

请尝试以下操作:

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

您如何决定将哪个值替换为NA?我看到您将Price1 NAs替换为13.1,将Price2 NAs替换为14.9,但您是如何得出准确的数字的?从日期之前的最后一个价格开始?如果是NA,则用最后一天的可用价格替换。好的,那么@Chandu提供的答案将完成此工作,除非您使用的是Sql Server 2000。我使用的是Microsoft Sql Server 2012。我还注意到,在我的表格中,它不是N/A,而是NULL。所以,我试图找出它不起作用的原因。然后,每次更改一行时,对整个表重复此操作。布莱奇。@亚伦·伯特兰:我该怎么做?我是一个初学者,所以请容忍我。你会使用触发器,但我决不是在暗示。当您查询数据而不是以这种方式存储数据时,填充这些列难道还不够吗?您可以在查询或表示层中这样做,而不必运行更新或维护依赖于其他行数据的数据。