2016-12-05 85 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