【问题标题】:how to order sql query with union ( ORA-00904) [duplicate]如何使用联合订购 sql 查询(ORA-00904)[重复]
【发布时间】:2015-04-24 09:02:14
【问题描述】:

我有大量查询,我必须按 desc 订购,但我做不到。我认为工会有问题,但我想不通。

查询在不使用 ORDER BY 的情况下工作。

这里是查询:

SELECT T.EMPLOYEE_NUMBER,
       F.REG_ID,
       F.DURATION_NETLINE,
       F.FLIGHT_NUMBER,
       F.DEPARTURE_DATE,
       USER_LIFUS.NAME,
       USER_LIFUS.SURNAME,
       F.FORM_RESULT_STATUS,
       T.LIEX_NUMBER,
       F.IS_PC_FLIGHT,
       F.IS_DC_FLIGHT,
       FT.NAME FLIGHT_TYPE,
       T.IS_RFLC,
       F.IS_DC_FLIGHT,
       F.LEG_ID
  FROM TRAINEE T
INNER JOIN FLIGHT F
    ON F.EVALUATED_EMP_NUM = T.EMPLOYEE_NUMBER
   AND F.DEPARTURE_DATE >= T.LIFUS_START_DATE
   AND (F.IS_SUBMITTED = 1 AND F.IS_DELETED = 0 AND F.IS_CANCELLED = 0)
   AND F.IS_DC_FLIGHT = 0
   AND F.IS_FC_FLIGHT = 0
   --and f.leg_id <>0
INNER JOIN USER_LIFUS
    ON USER_LIFUS.EMPLOYEE_NUMBER = F.INSTRUCTOR_EMP_NUM
INNER JOIN FLIGHT_TYPE FT
    ON F.FLIGHT_TYPE_ID = FT.ID
WHERE T.EMPLOYEE_NUMBER = '088416'
UNION ALL
SELECT T.EMPLOYEE_NUMBER,F.REG_ID,
       F.DURATION_NETLINE,
       F.FLIGHT_NUMBER,
       F.DEPARTURE_DATE,
       USER_LIFUS.NAME,
       USER_LIFUS.SURNAME,
       F.FORM_RESULT_STATUS,
       T.LIEX_NUMBER,
       F.IS_PC_FLIGHT,
       F.IS_DC_FLIGHT,
       FT.NAME FLIGHT_TYPE,
       T.IS_RFLC,
       F.IS_DC_FLIGHT,
       F.LEG_ID
  FROM TRAINEE T
INNER JOIN FLIGHT F
    ON F.EVALUATED_EMP_NUM = T.EMPLOYEE_NUMBER
   AND F.DEPARTURE_DATE >= T.LIFUS_START_DATE
   AND (F.IS_SUBMITTED = 1 AND F.IS_DELETED = 0 AND F.IS_CANCELLED = 0)
   AND F.IS_DC_FLIGHT = 1
   and f.is_fc_flight = 0
   AND F.LEG_ID <> 0
INNER JOIN USER_LIFUS
    ON USER_LIFUS.EMPLOYEE_NUMBER = F.INSTRUCTOR_EMP_NUM
INNER JOIN FLIGHT_TYPE FT
    ON F.FLIGHT_TYPE_ID = FT.ID
WHERE T.EMPLOYEE_NUMBER = '123456'

当我添加时

ORDER BY F.FLIGHT_NUMBER DESC

它给了我

ora-00904

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper


    【解决方案1】:

    假设你只添加了

    ORDER BY F.FLIGHT_NUMBER DESC
    

    在查询的底部,您需要将其添加到两个联合查询之外。

    SELECT * FROM (
    SELECT T.EMPLOYEE_NUMBER,
    F.REG_ID,
           F.DURATION_NETLINE,
           F.FLIGHT_NUMBER,
           F.DEPARTURE_DATE,
           USER_LIFUS.NAME,
           USER_LIFUS.SURNAME,
           F.FORM_RESULT_STATUS,
           T.LIEX_NUMBER,
           F.IS_PC_FLIGHT,
           F.IS_DC_FLIGHT,
           FT.NAME FLIGHT_TYPE,
           T.IS_RFLC,
           F.IS_DC_FLIGHT,
           F.LEG_ID
      FROM TRAINEE T
    INNER JOIN FLIGHT F
        ON F.EVALUATED_EMP_NUM = T.EMPLOYEE_NUMBER
       AND F.DEPARTURE_DATE >= T.LIFUS_START_DATE
       AND (F.IS_SUBMITTED = 1 AND F.IS_DELETED = 0 AND F.IS_CANCELLED = 0)
       AND F.IS_DC_FLIGHT = 0
       AND F.IS_FC_FLIGHT = 0
       --and f.leg_id <>0
    INNER JOIN USER_LIFUS
        ON USER_LIFUS.EMPLOYEE_NUMBER = F.INSTRUCTOR_EMP_NUM
    INNER JOIN FLIGHT_TYPE FT
        ON F.FLIGHT_TYPE_ID = FT.ID
    WHERE T.EMPLOYEE_NUMBER = '088416'
    UNION ALL
    SELECT T.EMPLOYEE_NUMBER,F.REG_ID,
           F.DURATION_NETLINE,
           F.FLIGHT_NUMBER,
           F.DEPARTURE_DATE,
           USER_LIFUS.NAME,
           USER_LIFUS.SURNAME,
           F.FORM_RESULT_STATUS,
           T.LIEX_NUMBER,
           F.IS_PC_FLIGHT,
           F.IS_DC_FLIGHT,
           FT.NAME FLIGHT_TYPE,
           T.IS_RFLC,
           F.IS_DC_FLIGHT,
           F.LEG_ID
      FROM TRAINEE T
    INNER JOIN FLIGHT F
        ON F.EVALUATED_EMP_NUM = T.EMPLOYEE_NUMBER
       AND F.DEPARTURE_DATE >= T.LIFUS_START_DATE
       AND (F.IS_SUBMITTED = 1 AND F.IS_DELETED = 0 AND F.IS_CANCELLED = 0)
       AND F.IS_DC_FLIGHT = 1
       and f.is_fc_flight = 0
       AND F.LEG_ID <> 0
    INNER JOIN USER_LIFUS
        ON USER_LIFUS.EMPLOYEE_NUMBER = F.INSTRUCTOR_EMP_NUM
    INNER JOIN FLIGHT_TYPE FT
        ON F.FLIGHT_TYPE_ID = FT.ID
    WHERE T.EMPLOYEE_NUMBER = '123456')
    ORDER BY FLIGHT_NUMBER DESC
    

    【讨论】:

      【解决方案2】:

      这样做:

      select temp.T.Employee_number,temp.F.REG_ID,temp.F.FLIGHT_NUMBER....
      from (  --your query mentioned above-- ) temp
      order by temp.F.FLIGHT_NUMBER desc;
      

      【讨论】:

        猜你喜欢
        • 2012-03-04
        • 2013-07-23
        • 2021-08-11
        • 1970-01-01
        • 2016-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多