输入栏最后一个非NULL值,并投入新列的每个条目SQL

问题描述:

我试图按照教程由SQLMag http://sqlmag.com/t-sql/last-non-null-puzzle输入栏最后一个非NULL值,并投入新列的每个条目SQL

SELECT id, col1, relevantid, 
          MAX(relevantid) OVER(ORDER BY id 
                ROWS UNBOUNDED PRECEDING) AS grp 
          FROM dbo.T1 
          CROSS APPLY (VALUES(CASE WHEN col1 IS NOT NULL THEN id END)) 
           AS A(relevantid); 

完成得到这个到SQL Server 2008上运行。每次我尝试MAX(relevantid)OVER(ORDER BY ID)我在订单附近收到语法错误。如果我划分它不是一个问题,但是如果我只包括命令我遇到问题,是否有解决方法。

+0

什么是确切的错误? – SriniV

在阅读Microsoft文档并从brent Ozar找到本文后,它看起来像您的某些语法不适用于SQL Server 2008。

https://docs.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql https://www.brentozar.com/sql-syntax-examples/window-function-examples-sql-server/

倒不如使用SQL Server的更高版本供自己使用,如果多数民众赞成你正在尝试做的。