SQL Server密集排名/内联连概念澄清?

时间:2012-03-05 01:02:46

标签: sql-server sql-server-2008-r2 inner-join dense-rank

我希望在使用连接时能够清楚地了解密集排名函数的行为。我在前面的帖子中找到了一个很好的解决方案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中日期的匹配。提前谢谢。

1 个答案:

答案 0 :(得分:0)

DENSE_RANK会对联接的结果进行排名。由于2012-01-02中没有Table2,因此结果为两行,DENSE_RANK会给出排名值12