代码之家  ›  专栏  ›  技术社区  ›  Asim

比较单列oracle中的多个值

  •  2
  • Asim  · 技术社区  · 7 年前

    这是我的场景。。。

    我有一张桌子 Bus\u stop\u表

    201 -------------------401

    201 -------------------402

    201--------------------403

    202 -------------------401

    202 -------------------405

    我必须选择一个公交id,他既有车站id 401,也有403。也就是201 但是当我试图找到这个时,我没有得到想要的结果。。 这是我的问题

    SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID =all(401,405);
    

    SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID 401 and STOP_ID = 
    405;
    
    SELECT BUS_ID,stop_id FROM BUS_STOP_TABLE WHERE STOP_ID 401 and STOP_ID = 
    405 group by (bus_id , stop_id);
    

    请任何人都可以帮助我。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Pரதீப்    7 年前

    使用 Group by Having 条款

    SELECT Bus_ID
    FROM   Bus_stop_table
    WHERE  STOP_ID IN ( 401, 403 )
    GROUP  BY Bus_ID
    HAVING Count(DISTINCT STOP_ID) = 2 
    

    或更灵活的方法

    SELECT Bus_ID
    FROM   Bus_stop_table
    GROUP  BY Bus_ID
    HAVING Sum(CASE STOP_ID WHEN 401 THEN 1 ELSE 0 END) > 0
           AND Sum(CASE STOP_ID WHEN 403 THEN 1 ELSE 0 END) > 0