COUNT (поле) возвращает 0, если его не существует - PullRequest
0 голосов
/ 16 мая 2019

Звучит как простая вещь, но я борюсь с этим и, возможно, из-за этого думаю.

Я в основном пытаюсь выяснить, если category, и что такое category, что отсутствует значение Job в поле title ... и я пытаюсь это сделать без итерации.

Таким образом, в этом примере он должен вернуть что-то, указывающее, что Strategy не имеет Job в поле title.

Первоначально я должен был сделать COUNT(), как в следующем примере:

SELECT category, COUNT(title)
FROM grid_mgmt
WHERE title = 'Job'
GROUP BY category;

Но потом стало очевидно, что это не сработает, потому что не на что рассчитывать.

Любые предложения о том, как вернуть 0, если не на что рассчитывать, или, возможно, лучший способ решения этой проблемы в MS Access с помощью SQL?

enter image description here

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Вы можете использовать условное агрегирование:

SELECT category, SUM(IIF(title = "Job", 1, 0))
FROM grid_mgmt
GROUP BY category;

Или, если у вас есть отдельная таблица категорий, a LEFT JOIN:

select c.category, count(gm.category)
from category as c left join
     grid_mgmt as gm
     on gm.category = c.category and
        gm.title = "Job"
group by c.category;
0 голосов
/ 16 мая 2019

Ответ Гордона ответил на вопрос, но хотел бы расширить его, поскольку в конечном итоге я изменил его, чтобы просто вернуть те, которые = 0:

SELECT category
FROM (
  SELECT category, SUM(IIF(title = "Job", 1, 0)) AS count
  FROM grid_mgmt
  GROUP BY category
)
WHERE count = 0;

На всякий случай, если это кому-то поможетеще вниз по дороге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...