У меня есть таблица, которая выглядит примерно так:
+---------+---------+-----------------+
| company | type | email |
+---------+---------+-----------------+
| ID001 | user | user@email.com |
| ID001 | admin | admin@email.com |
| ID002 | user | ... |
| ID002 | admin | ... |
| ID002 | janitor | ... |
| ID003 | admin | ... |
+---------+---------+-----------------+
Я бы хотел SELECT
все адреса электронной почты, где type
= user
. Если user
не существует, следует выбрать admin
. Если этого также не существует, следует выбрать janitor
и т. Д.
В конце мне нужен результат только с одним адресом электронной почты на компанию. Я смог отсортировать по type
и затем использовать SELECT TOP 1
так:
SELECT TOP 1
contacts.company,
contacts.type,
contacts.email
FROM contacts
WHERE contacts.Email <> "" AND contacts.company = "ID001"
ORDER BY
IIf([contacts.type] = 'user',1,
IIf([contacts.type] = 'admin',2,
IIf([contacts.type] = 'janitor',3,
4)))) ASC)
Это работает только для одной конкретной компании, см. Пункт WHERE
. Как я могу заставить это работать для всей таблицы?