SQL Server 2005, как использовать синтаксис объединения? - PullRequest
0 голосов
/ 22 июня 2019

У меня есть этот запрос

select c.RequestedByEmployeeID 
from Company c with (NOLOCK)

, который работает, но когда я пытаюсь это сделать, он терпит неудачу

select 
    c.RequestedByEmployeeID as ResponsibleLawyerID

union

select 
    c.RequestedByEmployeeID as ResponsibleLawyerID
from
    Company c with (NOLOCK)
order by
    c.CompanyID

с этой ошибкой:

Сообщение 107, Уровень 16, Состояние 2, Строка 44
Префикс столбца «c» не совпадает с именем таблицы или псевдонимом, используемым в запросе.

Сообщение 107, Уровень 16, Состояние 2, Строка 44
Префикс столбца «c» не совпадает с именем таблицы или псевдонимом, используемым в запросе.

Как я могу это исправить?

Спасибо

1 Ответ

1 голос
/ 22 июня 2019

Только не используйте псевдоним и повторите предложение FROM:

select c.CompanyId, c.RequestedByEmployeeID as ResponsibleLawyerID
from Company c
union
select c.CompanyId, c.RequestedByEmployeeID as ResponsibleLawyerID
from Company c
order by CompanyID;

Обратите внимание, что вам нужно выбрать столбец.Если вы не хотите выбирать столбец, но хотите упорядочить его, то одним из решений является подзапрос.Ваш запрос в основном бессмысленный (выбирая тот же столбец), поэтому добавление компании кажется разумным.

order by относится к результату union, а не к конкретному подзапросу.Таким образом, псевдоним не подходит.

Использование union означает, что вам не нужны дубликаты, поэтому за их удаление база данных подвергается снижению производительности.Если вам все равно, используйте union all.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...