Sql 表包含从客户端接收的表单列表。我需要找到所有没有提交表格C的客户

Sql 表包含从客户端接收的表单列表。我需要找到所有没有提交表格C的客户,sql,Sql,表包含从客户端接收的表单列表。我需要找到所有没有提交表格C的客户 ClientID Form ID DateReceived 1 A 7/1/16 1 B 7/2/16 1 C 7/3/16 2 A 8/1/16 2 B 8/1/16 您可以使用分组依据和拥有: select cli

表包含从客户端接收的表单列表。我需要找到所有没有提交表格C的客户

ClientID     Form ID    DateReceived
1               A       7/1/16
1               B       7/2/16
1               C       7/3/16
2               A       8/1/16
2               B       8/1/16

您可以使用
分组依据
拥有

select clientid
from t
group by clientid
having sum(case when formid = 'C' then 1 else 0 end) = 0;
或者,如果我假设您有一个
clients
表,那么编写查询的更自然的方法是:

select c.*
from clients c
where not exists (select 1
                  from clientforms cf
                  where cf.clientid = c.clientid and cf.formid = 'C'
                 );
这是一种更好的方法,因为它返回的客户根本没有提交任何表单