#sql-server-2008-r2
#sql-server-2008-r2
Вопрос:
Сотрудники, имеющие одну и ту же ветку, являются коллегами друг друга. Вам нужно написать запрос, который может предоставить вам коллег с EmpID ‘x’, и список коллег не должен включать самого пользователя ‘x’. Например: — Если x = 4, то результат должен быть EmpID 1 и 5.
Примечание: — Вы должны сделать это, используя только один запрос. Никакие вложенные запросы или подзапросы не разрешены.
это таблица вышеуказанной проблемы
Ответ №1:
SELECT t1.Id,(t2.Id),t2.branch From Employee as t1 ,Employee as t2
where t1.branch=t2.branch and t1.Id != t2.Id
Комментарии:
1. Хотя этот код может дать решение вопроса, лучше добавить контекст относительно того, почему / как это работает. Это может помочь будущим пользователям учиться и в конечном итоге применять эти знания к своему собственному коду. Вы также, вероятно, получите положительные отзывы / отзывы от пользователей, когда будет объяснен код.
Ответ №2:
Вы можете использовать запрос ниже
SELECT t2.* From [dbo].[EmpTest] as t1 ,[dbo].[EmpTest] as t2
WHERE t1.EmpId=4 and t1.branch=t2.branch and t2.EmpId<>4
Result:-
EmpId branch
1 D
5 D
Комментарии:
1. Но если я хочу упорядочить данные по всем коллегам для всех филиалов упорядоченно, не записывая empid=4, потому что, если у меня будут данные из 2000 строк, я не буду писать empid = 4 или не буду выбирать empid случайным образом и искать данные.
2. данные, которые я хочу, должны быть для всех упорядоченных ветвей
3. Без предоставления значений empid = x, как запрос идентифицирует вас для удаления из списка коллег? Для порядка вы можете использовать «порядок по t2. branch». Если это не ваш вопрос, пожалуйста, предоставьте некоторые примеры данных и ожидаемый результат.