【问题标题】:Order By on Select Query in Oracle在 Oracle 中按选择查询排序
【发布时间】:2016-11-14 06:30:17
【问题描述】:

我想在 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;

【问题讨论】:

  • 删除子选择并使用 JOIN。然后问题将“自行修复”,并且可以在 order 子句中使用 JOINed perority。
  • 你能告诉我怎么做吗??

标签: sql oracle10g


【解决方案1】:

这应该可行。请尝试一次。

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多