2016-07-12 2 views
2

나는 Order By 절에서 쿼리를 사용하고 싶습니다. 가능합니까?에 의한 주문 오라클의 쿼리 선택

select s.staff_list_pk, s.staff_name, Designation_fn(s.designation_fk) 
Designation, s.bps, Department_fn(s.department_fk) Department 
from staff_list s 
where s.RESERVE = 'N' and s.INTEREST = 'I' 
and s.bps in (18,19,20) 
and s.department_fk in (select department_fk from perority_dept 
where `et_blcok = 'Comp. Engg.') 
and s.staff_list_pk not in (select staff_list_fk from SUPERINTENDENT) 
order by (select perority from perority_dept where et_blcok = 'Comp. Engg.'), s.bps desc; 
+0

하위 선택을 제거하고 JOIN을 사용하십시오. 그러면 문제는 '자체적으로 고쳐지고'JOIN 된 자질이 주문 절에서 사용될 수 있습니다. – user2864740

+0

제발 어떻게 말해 주시겠습니까 .. ?? –

답변

0

이렇게하면됩니다. 한 번 시도해보십시오.

with xyz as (SELECT department_fk ,perority 
           FROM perority_dept 
           WHERE et_blcok = 'Comp. Engg.'), 

    klm as (select staff_list_fk 
      from SUPERINTENDENT)       

SELECT s.staff_list_pk, 
     s.staff_name, 
     Designation_fn (s.designation_fk) Designation, 
     s.bps, 
     Department_fn (s.department_fk) Department 
    FROM staff_list s , xyz x ,klm k 
WHERE  s.RESERVE = 'N' 
     AND s.INTEREST = 'I' 
     AND s.bps IN (18, 19, 20) 
     AND s.department_fk = x.department_fk          
     and s.staff_list_pk <> k.staff_list_fk 
     order by xyz.perority,s.bps desc;