2016-12-05 87 views
1

我有一个包含客户端信息的表。该表格保存每个客户端的许可证类型信息。按客户端查询的SQL组

enter image description here

我想查询该表只发现谁拥有牌照类型为2或1,没有别的客户的记录。客户可以拥有许可证类型1,2和3,这些客户端不应该符合结果集。

感谢您对此的任何帮助。

回答

1

您可以group byhaving做到这一点:

select clientid 
from t 
group by clientid 
having sum(case when licensetype not in (1, 2) then 1 else 0 end) = 0; 

having条款计数不可接受的许可证类型为每个客户端的数量。 = 0说没有。

编辑:

也许这真的是你想要什么:

having max(licensetype) = 2 and 
     min(licensetype) >= 1 -- not clear if this is necessary 
+0

感谢您的答复。该查询确实给出了许可证类型1或2的结果。实际上有5种许可证类型(1.2.3.4.5)。我试着编辑查询来返回客户端只有1和2的结果。任何建议。 – Ravinesh

+0

@Ravinesh。 。 。这个查询应该返回只有*许可证类型1和2的客户端,而且没有其他的(如果可能的话,也可能是'NULL')。 –

+0

是的,我试过查询,但只有许可证类型1的客户也出现在列表中。我担心许可证类型2.对于客户端来说,在结果集中有资格:许可证类型不能大于2,它可以小于2,但必须包含2。 – Ravinesh