Как я могу выбрать данные, которые являются эксклюзивными? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь написать оператор SELECT, который будет извлекать данные, которые существуют только один раз. У меня есть два столбца ItemID и OfficeID, и мне нужно найти элементы из столбца ItemID, которые зарегистрированы только в одном офисе. Элементы могут иметь несколько рядов, по одному для каждого офиса, которому они назначены. Таким образом, один ItemID может иметь несколько строк, если он используется в нескольких офисах. Могу ли я использовать оператор выбора с COUNT, или есть лучший способ?

Не могу придумать, с чего начать, но я использовал COUNT по-разному.

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Вы должны group by ItemID и в предложении having применить условие count(*) = 1:

select ItemID
from tablename
group by ItemID
having count(*) = 1

или с НЕ СУЩЕСТВУЮЩИМ:

select t.ItemID
from tablename t
where not exists (
  select 1 from tablename
  where ItemID = t.ItemID and OfficeID <> t.OfficeID
)

это вернет все элементы, для которых нет другой строки с таким же ItemID, но другим OfficeID.

0 голосов
/ 22 мая 2019

Используя HAVING и EXISTS, вы можете использовать приведенный ниже запрос, поскольку Элементы могут иметь несколько строк, по одной для каждого офиса, которым они назначены , и я читаю как ItemID будет только имеют несколько строк, если оно имеет несколько OfficeID.Если для одного и того же OfficeID может быть несколько строк, просто дайте нам знать.

select *
from table
where exists(select ItemID from table group by ItemID having count(*) = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...