Как выполнить SELECT, когда столбец должен соответствовать ВСЕМ значениям? - PullRequest
1 голос
/ 26 марта 2019

Рассмотрим таблицу с 3 столбцами:

CREATE TABLE myTable (
ItemName nvarchar(100),
ItemRank int,
ItemLoc nvarchar(100))

Пример вывода из таблицы (запрос для вставки ниже)

SELECT * FROM myTable
  1. Item1, 1, LocA
  2. Item1, 2, LocB
  3. Item1, 3, LocC
  4. Item2, 1, LocA
  5. Item2, 2, LocC
  6. Item3, 1, LocB
INSERT INTO [dbo].[myTable]
           ([ItemName]
           ,[ItemRank]
           ,[ItemLoc])
     VALUES
           ('Item1',1,'LocA'),
           ('Item1',2,'LocB'),
           ('Item1',3,'LocC'),
           ('Item2',1,'LocA'),
           ('Item2',2,'LocC'),
           ('Item3',1,'LocB')

Теперь я знаю, что есть только 3 возможных значения ItemLoc (LocA, LocB, LocC).

Мне нужновыбрать все ItemName с из myTable, где элементу не назначены все ItemLoc с (например, LocA, LocB, LocC).

Требуемый вывод с использованием данных aboce:

  1. Item2
  2. Item3

, поскольку Item2 не имеет LocB, а Item3 не имеет LocAили LocC set.

Как я могу это сделать?Я пытался использовать NOT EXISTS запрос и перечислять условия, но безрезультатно.

1 Ответ

2 голосов
/ 26 марта 2019

использовать агрегацию

select ItemName
from myTable
where ItemLoc in ('LocA','LocB','LocC')
group by ItemName
having count(distinct itemloc)<3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...