多sql语句是单查询

mklgxw1f  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(384)

我有一张这样的table

Product     Opportunity  
P1            O1  
P1            O2  
P2            O2
P1            O3
P2            O3
P3            O3
P4            O4

在这里,每个机会都可能有多种产品。
我有机会=o1,o1只有一个产品p1。现在,p1也存在于o2和o3中。在机遇o2和o3中,还有p2和p3以及p1。在这个关系中,p2存在2次,p3存在1次。现在我的结果应该是

Product      Count
P2             2
P3             1

另一个例子

这里我有机会(o1,o2,…),每个机会中都有多个产品。我的输入是o6,它有两个产品(p2,p4)。现在搜索所有具有p2或p4的Opportunity。我得到了o1,o3,和o4。

o1有另外两个产品—p1、p3
o3有另外四种产品——p3、p6、p7、p8
o4有另外三种产品——p1、p3、p9
我的最终结果应该是这个产品的计数

3z6pesqy

3z6pesqy1#

select 
    product,
    count(*)as count
    from MyTable
    where Product 
        not in(
            select 
            Product
            from MyTable 
            where Opportunity   
                in( 
                    select 
                    Opportunity
                    from MyTable 
                    group by Opportunity
                    having count(*)<=1
                    )
            )
   /*another conditions*/   
   -- And Opportunity='O1'
    group by product

相关问题