У нас есть функция, которая позволяет нам создавать SQL для возврата данных из одной таблицы на основе вложенного запроса, который фильтрует записи на основе критериев соответствия из другой таблицы. Теперь нам нужно иметь возможность возвращать данные из первой таблицы на основе верхних х записей следующего запроса, а не всех соответствующих записей. Для примера мы хотим что-то вродеSQL Server - требуется обработка данных на основе вложенного ранга
SELECT Name, Address, City, State, Zip
FROM CUSTOMERS
WHERE Customer_Location IN (SELECT TOP 100
CustomerID,
Rank() OVER PARTITION BY TID ORDER BY TerritoryName DESC) AS 'RANK'
FROM Territories
WHERE Nation = 'Canada')
Но с помощью оператора IN, до сих пор не хорошо, потому что мы можем вернуть только один столбец, и с помощью EXISTS не работает, как все существует делает возвращение «ИСТИНА «если какие-либо поля совпадают (даже если мы вернем ссылку на основной запрос). Кто-нибудь знает, как я могу заставить это работать? Благодарю.
Я не совсем понимаю, что вы пытаетесь сделать здесь. В вашем вопросе говорится, что вы не можете использовать 'IN', но в примере, который вы дали вам ясно. Вы вычисляете «Ранг», но это не повлияет на «TOP». Вы сопоставляете 'Customer_Location' и' CustomerID', которые кажутся странными. Это ваш фактический запрос или вы сделали некоторые упрощения до публикации? –