我希望在使用连接时能够清楚地了解密集等级函数的行为。我在前面的一篇文章中得到了一个很好的解决方案SQL Server recursive cte help want在查看解决方案时,它涉及使用密集等级和内部连接来分区数据,并在缺失数据点处中断。
所以:根据我对解决方案的阅读方式,在内部连接中,密集排名包括左侧的排名行,而不是右侧的行。我对此进行了一个小测试,但无法重现该行为。例如,当我运行查询并在 cte 上使用基本选择语句时,没有像在原始查询中那样再次对其进行分区,并且 1/5/12 的数据点 A 丢失,我得到:
TradeDate Symbol Clse DenseRank RowNumber
2012-01-03 A 36.48 1 1
2012-01-04 A 36.19 2 2
2012-01-06 A 37.40 4 3
根据我目前的理解,上面的密集排名值在最后两条记录上只会从 2 变为 3,因为连接不会返回 tblDailyPricingAndVol 中日期的匹配项。提前致谢。