我希望在使用连接时能够清楚地了解密集排名函数的行为。我在前面的帖子中找到了一个很好的解决方案SQL Server recursive cte help wanted在查看解决方案时,其中包括使用密集排名和内部联接来分割数据,并在缺少数据点时使用中断。
所以:根据我如何阅读解决方案,当在内部联接中时,密集等级包括在其左侧但不在右侧的排名行中。我设置了一个小测试,我无法重现这种行为。例如,当我运行查询并在cte上使用基本的select语句时,不再像在原始查询中那样对其进行分区,并且数据点为1/5/12,A缺失,我得到:< / p>
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中日期的匹配。提前谢谢。
答案 0 :(得分:0)
DENSE_RANK
会对联接的结果进行排名。由于2012-01-02
中没有Table2
,因此结果为两行,DENSE_RANK
会给出排名值1
和2
。