nata-ponchik
@nata-ponchik
Учусь на веб-дизайнера

Как получить всевозможные уникальные пары двух полей из одной таблицы?

Есть такая таблица:
create table EMPLOYEE(
PK_ID int identity(1,1) NOT NULL,
DEPARTMENT_ID int NOT NULL,
FK_CHIEF_ID int NOT NULL,
NAME varchar(255) NOT NULL,
POSITION varchar(255) NOT NULL,
SALARY float NOT NULL,

constraint PK_ID_ID primary key (PK_ID),
constraint FK_CHIEF_ID_EMPLOYEE foreign key (FK_CHIEF_ID) references EMPLOYEE (PK_ID),
)

Её заполняем данными:
INSERT INTO EMPLOYEE VALUES 
(2, 1, 'NAT','programmer',145.9),
(2, 1, 'IVA','programmer',200.1),
(2, 1, 'EVG','boss',300.0),
(2, 1, 'TAN','artist',179.9),
(2, 1, 'NAT','teacher',222.9),
(2, 1, 'IVA','math',213.1),
(2, 1, 'NAT','sport',151.9),
(2, 1, 'IVA','math',134.1),
(3, 1, 'EVG','boss',142.0),
(3, 1, 'NAT','actor',167.9),
(3, 1, 'EVG','boss',333.0),
(4, 1, 'TAN','language',543.9),
(4, 1, 'IVA','math',654.1),
(4, 1, 'TAN','artist',465.9),
(4, 1, 'TAN','programmer',789.9);

Как получить всевозможные уникальные пары имен сотрудников некоторого отдела с разными должностями?
  • Вопрос задан
  • 1342 просмотра
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
group by name, position order by name
Ответ написан
denman1985
@denman1985
SQL, Oracle Forms/Reports dbd
Если имеется ввиду и те пары которых нету в таблице то это через CROSS JOIN:
SELECT DISTINCT a.name, b.position
FROM (SELECT name FROM employee) AS a  CROSS JOIN (SELECT position FROM employee) AS b;

имен сотрудников некоторого отдела с разными должностями

Сотрудники только определенного отдела, а должности с любого отдела? В первый подзапрос добавьте условие по DEPARTMENT_ID
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы