Это упрощенная версия реального запроса, чтобы показать проблему.Это может быть выполнено в примере базы данных Adventureworks:
SELECT Person.Address.*,
(SELECT TOP 1 [Name]
FROM Person.StateProvince
WHERE Person.StateProvince.StateProvinceId = Person.Address.StateProvinceId AND Person.StateProvince.TerritoryId IN (5, 6, 7)
ORDER BY Person.StateProvince.TerritoryId) AS [Name]
FROM Person.Address
ORDER BY [Name]
Это работает хорошо, но моя проблема в том, что, если я добавляю сопоставление к порядку по полю, я получаю странное сообщение об ошибке:
SELECT Person.Address.*,
(SELECT TOP 1 [Name]
FROM Person.StateProvince
WHERE Person.StateProvince.StateProvinceId = Person.Address.StateProvinceId AND Person.StateProvince.TerritoryId IN (5, 6, 7)
ORDER BY Person.StateProvince.TerritoryId) AS [Name]
FROM Person.Address
ORDER BY [Name] COLLATE Chinese_PRC_CI_AI
И ошибка:
Msg 207, Level 16, State 1, Line 7
Invalid column name 'Name'.
Запрос с предложением collate хорошо работает, если нет подзапроса, но мне нужно, чтобы он был таким (по сложной причине, но, пожалуйста, поверьте мне:)).
Кто-нибудь знает, почему этот запрос не выполняется и что может быть возможным обходным путем?Это ошибка?
Спасибо!Адам