Концептуальные пояснения к плотному рангу / внутреннему объединению SQL Server? - PullRequest
0 голосов
/ 05 марта 2012

Я надеюсь прояснить поведение функции плотного ранга при работе с соединениями. Ранее я получил отличное решение от моего поста Требуется рекурсивная помощь SQL Server cte При рассмотрении решения, которое включает использование плотного ранга и внутреннего соединения для разделения данных с разрывами в отсутствующих точках данных.

Итак: Исходя из того, как я читаю решение, во внутреннем соединении плотный ранг включает в свои ранжирующие строки, которые находятся слева, но не справа. Я настроил небольшой тест этого, и я не могу воспроизвести это поведение. Например, когда я запускаю запрос и использую базовый оператор выбора для 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. Заранее спасибо.

1 Ответ

0 голосов
/ 05 марта 2012

DENSE_RANK оценивает результат соединения. Поскольку у вас нет 2012-01-02 в Table2, результатом будет две строки, а DENSE_RANK даст значения ранжирования 1 и 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...