针对不同条件的相同列查询

时间:2017-06-19 16:50:07

标签: sql multiple-conditions

我有一张如下表格,请帮我修建。

示例:

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

所以我正在寻找同一列只有100但不是101或102的column1。

从我上面的例子中,333333 100正是我正在寻找的,它有100但不是101和102。

3 个答案:

答案 0 :(得分: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)
)

答案 1 :(得分:0)

如果您想要group by值,可以使用havingcolumn1

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;

如果这些是您唯一关注的三个值,则可以将其简化为:

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

答案 2 :(得分:0)

听起来您可能正在尝试进行数据透视查询:

https://www.techonthenet.com/oracle/pivot.php