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;