【发布时间】:2020-01-15 17:02:37
【问题描述】:
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
【问题讨论】:
-
通过升级到支持的 sql server 版本。 LAG 在 2008R2 中不可用,因此您无法使其工作,它不存在。但是你真的需要考虑升级。几个月来,该版本已不受支持。
-
您可以尝试使用其他窗口函数,如 DENSE_RANK 与递归 CTE 的组合。 DENSE_RANK 和 CTE 在 2K8R2 中都可用
-
2008R2 中 LAG() 函数的任何替代项
-
一种解决方案是使用由 ROW_NUMBER() 或某些变体派生的序列链接的左/自连接 CTE。然后在自联接的领先或滞后表上使用聚合。
-
LAG的alternative(您不能替代LAG)将是aCTE、ROW_NUMBER和自引用CTE。但真正的解决方案是升级。
标签: sql-server sql-server-2008-r2