SQL Запрос для получения элементов, которые имеют только одно значение - PullRequest
0 голосов
/ 02 февраля 2020

Я ищу запрос SQL, чтобы выбрать все значения со значением ACTIVITY 'SPORT', а не с дублирующим значением NAME.

Таблица:

 ID    NAME      ACTIVITY
 1      Sam       Sport
 2      Sam       Music
 3      Alex      Sport
 4      Peter     Reading
 5      Rex       Painting

Пример: Поиск по Имя только с одним видом деятельности (СПОРТ). Результаты должны быть такими:

3     Alex     SPORT

Примечание: SAM отсутствует в результатах, так как у него есть два вида активности SPORT и Musi c, но у Алекса есть только один вид спорта. Я использую Excel.

Я пробовал этот код, но он возвращает Сэма и Алекса.

SELECT [ID], [Name], [Activity]
FROM [TABLE$]
WHERE [ACTIVITY] = 'SPORT'
GROUP BY [ID], [NAME], [Activity]
HAVING COUNT ([Name]) = 1))

1 Ответ

1 голос
/ 02 февраля 2020

Если вам не нужен столбец [ID] в результатах, тогда:

SELECT [Name], MAX([Activity]) 
FROM [TABLE$]  
GROUP BY [NAME] 
HAVING MIN([ACTIVITY]) = 'SPORT' AND MAX([ACTIVITY]) = 'SPORT'

Если вам нужна полная строка:

SELECT t.* 
FROM [TABLE$] AS t
WHERE t.[ACTIVITY] = 'SPORT' 
AND NOT EXISTS (
  SELECT 1 FROM [TABLE$]
  WHERE [NAME] = t.[NAME] AND [ACTIVITY] <> t.[ACTIVITY]
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...