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 server 2008 R2中使用LAG()?_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql server 如何在SQL server 2008 R2中使用LAG()?

Sql server 如何在SQL server 2008 R2中使用LAG()?,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,您可以使用应用程序: ??指示标识数据唯一序列的标识列。方法是升级到支持的sql server版本。LAG在2008R2中不可用,因此您无法使其工作,它不存在。但你真的需要考虑升级。这个版本已经有好几个月不受支持了。你可以尝试使用其他窗口函数,比如DENSE_RANK和递归CTE的组合。2K8R2中既有稠密_秩,也有CTE。2008R2中任何一种滞后函数的替代方法都可以使用一个左/自连接的CTE,该CTE由一个从行_数或某些变量导出的序列链接。然后在自连接超前或滞后表上使用聚合。滞后的替代方法是

您可以使用应用程序:


??指示标识数据唯一序列的标识列。

方法是升级到支持的sql server版本。LAG在2008R2中不可用,因此您无法使其工作,它不存在。但你真的需要考虑升级。这个版本已经有好几个月不受支持了。你可以尝试使用其他窗口函数,比如DENSE_RANK和递归CTE的组合。2K8R2中既有稠密_秩,也有CTE。2008R2中任何一种滞后函数的替代方法都可以使用一个左/自连接的CTE,该CTE由一个从行_数或某些变量导出的序列链接。然后在自连接超前或滞后表上使用聚合。滞后的替代方法是aCTE、行号和自参考CTE,不能替代滞后。但真正的解决办法是升级。
SELECT
  CASE
    WHEN ser.[Department Name] = LAG(SER.[Department Name]) OVER (ORDER BY SER.[Department Name]) THEN ''
    ELSE SER.[Department Name]
  END [Department Name] from department
SELECT (CASE WHEN d.[Department Name] = Prev_Dept
             THEN '' ELSE d.[Department Name]
        END) AS DepartmentName
FROM department d OUTER APPLY
     ( SELECT TOP (1) d1.[Department Name] AS Prev_Dept
       FROM department d1
       WHERE d1.? < d.?
       ORDER BY ? DESC
     ) AS Pd;