2014-01-27 44 views
0

我有表有兩個的cols ID_COL和VALUE_COL。查詢以找到獨特的價值組合

ID_COL VALUE_OUT 
====== ========= 
15   10 
16   10 
16   11 
17   10 
17   11 
17   12 
18   10 
18   12 
19   11 
20   11 
20   12 
21   12 

該表根據我們的商業規則填充了一些組合。現在我想找到如下的輸出。

從應用程序的輸入是11,12

我們需要在上表中進行搜索,並需要找到ID_COL。在這種情況下,我需要返回ID_COL值20(這是11,12其他值完全匹配)

它不是兩個值匹配,有時它可能也是單值也..如果我通過12 ..我需要回到id_col 21

+0

將它永遠是兩個數值輸入需要匹配,還是可以更多或更少?是否總會有單個匹配的行返回,或者可以有多個? –

+0

這是不匹配的兩個值,有時還..如果我通過12 ..我需要回到id_col 21 – UserKK

+0

請[編輯]你的問題,並補充說,信息在那裏,因爲它是相關答案可能是單值對你的問題。 (這將幫助那些誰試圖回答你。) –

回答

0
select ID_COL 
from table 
group by ID_COL 
having 
    count(0) = 2 and 
    count(case when VALUE_OUT in (11,12) then 1 end) = 2 
0

如果我正確了你的問題,那麼你要找到在* Id_COL *滿足從應用程序傳遞的兩個輸入值的* VALUE_OUT *值。

可以使用下面的查詢爲:

select ID_COL from table where value_out in (11,12); 

希望我理解你正確的問題。

希望它可以幫助

Vishad

+0

不,這不是它。 –

0

您可以聚合和having條款做到這一點:

select id_col 
from t 
group by id_col 
having sum(case when value_out = 11 then 1 else 0 end) > 0 and 
     sum(case when value_out = 12 then 1 else 0 end) > 0 and 
     sum(case when value_out not in (11, 12) then 1 else 0 end) = 0; 

前兩個在having條款保證條款,每個值存在。第三個條款確保沒有其他值。

編輯:

我知道你在那裏的值是整數特定情況下,你可以這樣做:

having min(value_out) = 11 and max(value_out) = 12; 

having min(value_out) = 11 and max(value_out) = 12 and count(distinct value_out) = 2;