SQL Group By Client Query

时间:2016-12-05 23:43:39

标签: sql

我有一个包含客户信息的表。此表包含针对每个客户端的许可证类型信息。

enter image description here

我希望查询此表只查找许可证类型为2或1且没有其他内容的客户端的记录。客户端可以拥有类型1,2和3的许可证,此类客户端不应符合结果集的条件。

感谢您对此的任何帮助。

1 个答案:

答案 0 :(得分: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