分组和统计问题

时间:2015-07-21 22:25:02

标签: sql oracle

我有一张这样的表:

Id,Code, (some more columns)
1, c
1, a
1, b
1, b
1, b
2, a -- the desired row
3, b
3, c
3, a
3, a

我希望得到一个Id(或全部)只与'a'相关联而不是'b'和'c'。我该怎么做?

我刚才尝试过:

select *
from
(
select Id, count(case when Code='a' then 0 else 1 end) c
from tbl
group by Id
)
where c = 0

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

这将为您提供仅与'a'代码相关联的Id值列表。

select Id
from tbl
group by Id
having max(case when Code='a' then 0 else 1 end) = 0

有关现场演示,请参阅此fiddle