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