为SQL Server 2008 R2最新的非NULL值替换NULL值在结果集系列(SQL Server 2008 R2中)
我有一个结果,看起来像这样(注[价格]是数字,NULL低于代表 NULL值,结果集是由PRODUCT_ID和时间戳)
product timestamp price
------- ---------------- -----
5678 2008-01-01 12:00 12.34
5678 2008-01-01 12:01 NULL
5678 2008-01-01 12:02 NULL
5678 2008-01-01 12:03 23.45
5678 2008-01-01 12:04 NULL
我想变换来设置(基本)副本从最新的前行中的非空值,以产生一个结果结果排序看起来像这样:
product timestamp price
------- ---------------- -----
5678 2008-01-01 12:00 12.34
5678 2008-01-01 12:01 12.34
5678 2008-01-01 12:02 12.34
5678 2008-01-01 12:03 23.45
5678 2008-01-01 12:04 23.45
我没有找到任何合计/窗口化功能,让我做到这一点(再次这只需要SQL Server 2008 R2的。)
我希望能找到适合做一个分析聚合函数我,像...
LAST_VALUE(price) OVER (PARTITION BY product_id ORDER BY timestamp)
,但我似乎还没有找到任何方式在窗口做一个“累积最新的非空值”(开往窗口前行,而不是整个分区)
除了创建一个表值用户定义函数,我有没有任何内建可以完成这个任务?
UPDATE:
显然,此功能可在 '德纳' CTP,但不能在SQL Server 2008 R2。
LAST_VALUE http://msdn.microsoft.com/en-us/library/hh231517%28v=SQL.110%29.aspx
我只是希望它是SQL Server 2008中它的问世在甲骨文(因为10gR2中至少)提供,我可以做同样的事情在MySQL 5.1中,使用局部变量。
http://download.oracle.com/docs/cd/E14072_01/server.112/e10592/functions083.htm
你说的是哪功能迪纳利这是可用的,但不是2008 R2? –