PARTITION 函数 COUNT() OVER 和 DISTINCT
使用 PARTITION 函数和 COUNT() 来计算不同值的运行总计可以是SQL Server 中的挑战。虽然聚合函数支持 DISTINCT 关键字,但它不能在分区函数中使用。这种限制可能会令人沮丧,尤其是在尝试计算不同值的运行总计时。
计算不同计数的一种传统方法是使用相关子查询。然而,这种方法可能效率低下且难以维护。
幸运的是,有一个使用dense_rank()的简单解决方案:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
此表达式计算每个中不同 UserAccountKey 的运行总和月。它的工作原理是首先按升序对值进行排名,然后按降序对它们进行排名,最后从两个排名的总和中减去 1。这种方法有效地消除了重复值,同时提供不同值的运行计数。
以上是如何计算 SQL Server 分区中不同值的运行总计?的详细内容。更多信息请关注PHP中文网其他相关文章!