簡體   English   中英

在單個列中比較多個值oracle

[英]Compare multiple values in a single column oracle

我想將一列的多個值與另一列的單個值進行比較。我已經嘗試了很多,但這給了我“未選擇行”這是我的情況...

我有一張桌子Bus_stop_table

Bus_ID(FK)------ STOP_ID

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

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

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

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

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

203 ------------------- 403

203 ------------------- 406

我必須選擇一個同時具有stop_id 401和403的bus_id。它是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);

請任何人都可以幫助我。

使用Group byHaving子句

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM