2015-06-13 57 views
0

組和我有一個表阿SQL與由具有子句

ID SALN INDICATOR 
    1 100 A 
    2 100 B 
    3 200 A 
    4 200 C 
    5 100 c 
    6 300 B 
    7 200 D 

我需要通過SALN和具有指示器組A,B的分組之後,從表A中拉SALN,C僅

SALN 
100 

請讓我知道這個

回答

0
select saln 
from your_table 
group by saln 
having sum(indicator not in ('A','B','C')) = 0 

的SQL如果你還需要檢查,如果A,B和C都存在一個SALN然後添加

and sum(indicator = 'A') > 0 
and sum(indicator = 'B') > 0 
and sum(indicator = 'C') > 0 

到查詢結束。

1
select saln 
from A 
where indicator in('A','B','C') 
group by saln 
having sum(indicator) = 100 
+0

爲什麼包括s嗯(指標)= 100 – shrikanth

+0

因爲你把顯示器設置爲100,並且指定需要'擁有'。 –

0

如果你想這三個值,那麼你可以做:

select saln 
from A 
where indicator in ('A', 'B', 'C') 
group by saln 
having count(*) = 3; 

如果可以有重複,然後使用:

having count(distinct indicator) = 3 

如果你要A,B,和C並且沒有其他值,那麼一種方法是:

select saln 
from A 
group by saln 
having count(distinct case when indicator in ('A', 'B', 'C') then indicator end) = 3; 
+0

它已經檢索到所有SALN作爲與每個saln有關的註冊者之一的A或B或C中的一個。我需要的是與所有的指示器A和B和C至少有關的任何saln – shrikanth

+0

@shrikanth。 。 。你確定你有'擁有'條款嗎? (注意:第二個代碼應該是*有*而不是*,其中* - 我原本就有。) –

+0

是的。我現在嘗試了第一個和第二個。沒有運氣 – shrikanth