使用分區和Dense_Rank() OVER 實現不同計數
嘗試使用COUNT() OVER 計算不同值的運行時,包含DISTINCT關鍵字通常會導致錯誤。雖然您可以採用相關子查詢等傳統方法,但有更有效的解決方案。
在 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。結果正是該月內唯一 UserAccountKey 的數量,為您提供所需的運行總數。
以上是如何使用分割區有效計算 SQL Server 中不同值的運行總計?的詳細內容。更多資訊請關注PHP中文網其他相關文章!