我有两个cols ID_COL和VALUE_COL的Table。
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)
如果我的问题正确,那么你想找到* Id_COL *中的值,它们满足从* VALUE_OUT *的应用程序传递的输入值。
您可以使用以下查询:
select ID_COL from table where value_out in (11,12);
希望我理解你的问题。
希望有所帮助
Vishad
答案 1 :(得分: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
答案 2 :(得分: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;