Oracle PL / SQL - 从另一列的子集中选择已分组的ID

时间:2017-05-03 16:18:00

标签: sql oracle oracle11g

我在Oracle 11g中有一个表.suggestion-text { margin: 5px 0; box-sizing : border-box; padding : 20px; } .suggestion-actionbuttons{ display : flex; } .actions-small{ display : flex; } .approved{ margin-top : 7px; }

HeldItems

说我想要Carrier Item 1 A 1 B 1 C 2 B 2 C 3 E 4 A 4 B 4 C 4 D 4 E 子集A,B和C的Carrier来达到这个效果:

Item

我试图通过以下方式获取它们:

Carrier
1
4

但这显然会让我SELECT Carrier FROM HeldItems WHERE Item IN ('A', 'B', 'C') GROUP BY Carrier 像2,我不能

Carrier

我需要使用哪些条件来获取仅符合项目子集(A,B,C)的ID?

1 个答案:

答案 0 :(得分:2)

您当前的查询已结束。您可以计算HAVING子句中不同项目的数量,并验证有3个不同的项目。

SELECT Carrier
FROM HeldItems
WHERE Item IN ('A', 'B', 'C')
GROUP BY Carrier
HAVING COUNT(DISTINCT Item) = 3

这将返回具有项目A,B和C的子集的所有运营商,以及可能还有其他项目。如果您还想查找仅包含这三项的运营商,则可以修改上述查询。