У меня есть запрос, как:Сортировать по вновь выбранной колонке
SELECT
R.*
FROM
(SELECT A, B,
(SELECT smth from another table) as C,
ROW_NUMBER() OVER (ORDER BY C DESC) AS RowNumber
FROM SomeTable) R
WHERE
RowNumber BETWEEN 10 AND 20
Это дает мне ошибку на ORDER BY C DESC
.
Я понимаю, почему это вызвано ошибкой, поэтому я подумал о добавлении другого SELECT
с ORDER BY
и только, чем при выборе строки от 10 до 20. Но я не думаю, что это хорошо, чтобы иметь 3 вложенные SELECT
команды.
Как еще можно выбрать эти строки?
Я понимаю, подзапрос продуцирующие 'C' является коррелирует с тем, где вы пытаетесь сгенерировать номера строк. Если это так, вы можете попробовать преобразовать коррелированный подзапрос в один, к которому вы могли бы присоединиться. (Мое предположение: вам просто нужно использовать условие корреляции в качестве условия соединения, но я не могу быть уверен, не видя подзапроса и как он связан с другими частями всего запроса.) –
Подзапрос выбирает счетчик из другая таблица с некоторым состоянием. – superM
'... (SELECT sA, sB, aC, ROW_NUMBER OVER (ORDER BY aC DESC) FROM SomeTable s INNER JOIN (SELECT Key, COUNT (*) AS C FROM AnotherTable) a ON s.Key = c.Key) R ...' ? –