Фильтр операторов выбора SQL - PullRequest
0 голосов
/ 08 июня 2010

Я борюсь с фильтром для клиентов в нашей системе.У каждого Клиента есть план, который проводится ежемесячно.Для каждого плана может быть несколько посещений, и для каждого посещения могут быть разные задачи посещения, причем каждая задача подпадает под категорию, например

ClientNo  VisitNo  VisitTaskID   TaskCategory
------------------------------------------
900001      100        19         P
900001      100        18         P
900001      100        01         H
900001      105        21         P
900001      105        19         P
900001      105        16         C

. Я хочу подсчитать количество клиентов, которые получают только VisitTaskID 19 дляTaskCategory 'P'.Я попытался использовать приведенный ниже запрос, но он не будет отфильтровывать другие визитки в категории P

SELECT COUNT (ClientNo)
FROM Tasks
WHERE VisitTask NOT IN (02,03....18,20,21)

В результате по-прежнему учитываются клиенты с VisitTaskID, которые, по моему мнению, отфильтровывают.Каждый визитTaskID уникален независимо от того, к какой категории он относится.

Любая помощь очень ценится.

1 Ответ

3 голосов
/ 08 июня 2010

Клиенты, у которых есть только задача 19 в категории p:

SELECT COUNT (ClientNo)
FROM Tasks
WHERE (VisitTask = 19 AND TaskCategory = 'P')
AND NOT EXISTS (SELECT clientno FROM tasks WHERE VisitTask =! 19 AND TaskCategory = 'P')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...