2017-10-03 7 views
2

열의 여러 값을 다른 열의 단일 값과 비교하려고합니다. 많이 시도했지만 "선택된 행 없음" 여기 내 시나리오가 있습니다 ...단일 열 오라클의 여러 값 비교

Bus_ID (FK) ------ STOP_ID

------------------- 201 :

Bus_stop_table 테이블이 401

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

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

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

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

203

------------------- 403

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

I 둘 stop_id 한 bus_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); 

누군가가 나를 도울 수하십시오입니다.

답변

4

사용 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