SQL select语句过滤器

时间:2010-06-08 11:12:52

标签: tsql

我正在努力为我们系统中的客户端过滤器。每个客户都有一个每月执行的计划。对于每个计划,可以有多次访问,并且对于每次访问,可以有不同的访问任务,每个任务属于一个类别,例如,

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

类别下的其他VisitTasks
SELECT COUNT (ClientNo)
FROM Tasks
WHERE VisitTask NOT IN (02,03....18,20,21)

结果仍然计算客户端使用VisitTaskID,我认为我正在过滤掉。 每个VisitTaskID都是唯一的,无论它属于哪个类别。

非常感谢任何帮助。

1 个答案:

答案 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')