Индексация строк в MS SQL
Можно ли как-то проиндексировать строки в запросе, чтобы выбрать нужную? Я попытался сделать это через функцию ROW_NUMBER(), но дело в том, что это оконная функция.
SELECT
ROW_NUMBER() OVER(ORDER BY Client_ID), Client_ID FROM Apartments_and_clients
WHERE Apartment_ID = 1
Я попробовал сделать по-другому:
SELECT
ROW_NUMBER() OVER(ORDER BY Client_ID), Client_ID FROM Apartments_and_clients
WHERE Apartment_ID = 1 AND (SELECT
ROW_NUMBER() OVER(ORDER BY Client_ID), Client_ID FROM Apartments_and_clients
WHERE Apartment_ID = 1) = 2
но дело в том, что запрос возвращает больше 1 результата.
Ответы (1 шт):
Автор решения: Nick Proskuryakov
→ Ссылка
Я думаю вам поможет CTE
;WITH CTE
AS (
SELECT
ROW_NUMBER() OVER ( ORDER BY Client_ID ) AS rn,
Client_ID
FROM Apartments_and_clients
WHERE Apartment_ID = 1
)
SELECT
CTE.rn,
CTE.Client_ID
FROM CTE
WHERE CTE.rn = 1;