我正在努力为我们系统中的客户端过滤器。每个客户都有一个每月执行的计划。对于每个计划,可以有多次访问,并且对于每次访问,可以有不同的访问任务,每个任务属于一个类别,例如,
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 for TaskCategory'P'的客户进行计数。我尝试使用下面的查询,但它不会过滤掉P
类别下的其他VisitTasksSELECT COUNT (ClientNo)
FROM Tasks
WHERE VisitTask NOT IN (02,03....18,20,21)
结果仍然计算客户端使用VisitTaskID,我认为我正在过滤掉。 每个VisitTaskID都是唯一的,无论它属于哪个类别。
非常感谢任何帮助。
答案 0 :(得分:3)
在p类别中只有任务19的客户:
SELECT COUNT (ClientNo)
FROM Tasks
WHERE (VisitTask = 19 AND TaskCategory = 'P')
AND NOT EXISTS (SELECT clientno FROM tasks WHERE VisitTask =! 19 AND TaskCategory = 'P')