2017-06-19 58 views
0

我有一张如下表,请帮我建立它。不同条件下的相同列查询

实施例:

column 1 column 2 
111111  100 
111111  101 
111111  102 
222222  101 
222222  102 
333333  100 

所以我寻找列1仅具有100但不是101或102的同一列。

从我上面的例子中,333333 100正是我期待的,其中有100个,但不是101和102

+0

您正在使用什么数据库? – John

+0

提供您到目前为止的SQL示例。 –

+0

我在DB2中构建它。 – Gireesh

回答

0

您可以使用group byhaving如果你想column1 value:

select column1 
from t 
group by column1 
having sum(case when column2 = 100 then 1 else 0 end) > 0 and 
     sum(case when column2 in (101, 102) then 1 else 0 end) = 0; 

如果这些是您关心的唯一三个值abou T,您可以简化这:

select column1 
from t 
where column2 in (100, 101, 102) 
group by column1 
having max(column2) = 100; 
+0

谢谢戈登,它完美的工作。 – Gireesh

0

尝试not exists操作

SELECT * 
FROM table t1 
WHERE column2 = 100 
AND NOT EXISTS (
    SELECT * FROM table t2 
    WHERE t1.column1 = t2.column1 
    AND t2.column2 in (101, 102) 
) 
+0

完美的作品,谢谢krokodilko – Gireesh

相关问题