Ниже две версии одного и того же запроса
Версия 1 (использует k как псевдоним во внутреннем SELECT):
SELECT k as [year], w_vol,
ROW_NUMBER() OVER (ORDER BY k DESC) AS rank1,
ROW_NUMBER() OVER (ORDER BY w_vol DESC) AS rank2
FROM (
SELECT w_vol, c_date AS k FROM
(SELECT 1590 AS c_date, 1 AS w_vol),
(SELECT 1599 AS c_date, 1 AS w_vol),
(SELECT 1602 AS c_date, 1 AS w_vol),
(SELECT 1609 AS c_date, 2 AS w_vol),
(SELECT 1610 AS c_date, 1 AS w_vol),
)
ORDER BY 1
Версия 2 (использует l как псевдоним во внутреннем SELECT):
SELECT l as [year], w_vol,
ROW_NUMBER() OVER (ORDER BY l DESC) AS rank1,
ROW_NUMBER() OVER (ORDER BY w_vol DESC) AS rank2
FROM (
SELECT w_vol, c_date AS l FROM
(SELECT 1590 AS c_date, 1 AS w_vol),
(SELECT 1599 AS c_date, 1 AS w_vol),
(SELECT 1602 AS c_date, 1 AS w_vol),
(SELECT 1609 AS c_date, 2 AS w_vol),
(SELECT 1610 AS c_date, 1 AS w_vol),
)
ORDER BY 1
Ниже приведен вывод, который я последовательно получаю для обоих запросов (используется примечание No Cached Results
)
Я ожидал, что результат будет одинаковым независимо от того, какой псевдоним используется - это просто псевдоним!
Вопрос. Почему я постоянно получаю отказ для версии 1 и "успешно" для версии 2?
k
и только с двумя разными окнами разделов. (Я могу воспроизвести ошибку при заменеcount(*)
наrow_number()
, но не при выравнивании предложенийorder by
.) - person oulenz   schedule 22.04.2016k
иx
вызывает ошибку. - person oulenz   schedule 25.04.2016