Oracle SQL中按多列排序

Oracle SQL中按多列排序,oracle,Oracle,您好,我想多栏订购 排序下降计划支腿 按天数排序 排序下降时间 我知道可以使用以下SQL代码。但是,由于某些原因,在我使用的特定ETL在线工具中,这不起作用 SELECT plane_check AS plane_leg, min(trunc(ead_date)- trunc(pickup_date_ts)) AS no_of_days, to_char(max(pickup_date_ts),'HH24:MI') as time from

您好,我想多栏订购

  • 排序下降计划支腿
  • 按天数排序
  • 排序下降时间
  • 我知道可以使用以下SQL代码。但是,由于某些原因,在我使用的特定ETL在线工具中,这不起作用

    SELECT
           plane_check AS plane_leg,
           min(trunc(ead_date)- trunc(pickup_date_ts)) AS no_of_days,
           to_char(max(pickup_date_ts),'HH24:MI') as time
    
    from
           final_leg
    group by
           plane_check, trunc(pickup_date_ts)
    order by
    plane_leg DESC, no_of_days ASC, time DESC
    
    因此,我希望有人建议使用串联或其他方法对这些数据进行排序


    当我使用Mysql Server 5.0时,您编写的用于工作的上述查询,与更高版本类似的一些原因。它不再工作

    您可以按数据分组,然后使用以下查询进行排序。让我知道这是否有效

    Select * from (SELECT
                  plane_check AS plane_leg,
                  min(trunc(ead_date)- trunc(pickup_date_ts)) AS no_of_days,
                  to_char(max(pickup_date_ts),'HH24:MI') as time
                  from
                  final_leg
                  group by
                  plane_check, trunc(pickup_date_ts)) t1
    order by
    plane_leg DESC, no_of_days ASC, time DESC
    
    试试这个:

    SELECT
        PLANE_LEG,
        NO_OF_DAYS,
        TIME
    FROM
        (
            SELECT
                PLANE_LEG,
                NO_OF_DAYS,
                TIME,
                TO_NUMBER((PLANE_LEG * 1000)
                  ||((MAX(NO_OF_DAYS) OVER() - NO_OF_DAYS) * 100)
                  ||(TO_CHAR(TIME, 'HH24') * 10)) AS ORDER_CLAUSE
            FROM
                DATAA
        )
    ORDER BY
        ORDER_CLAUSE DESC
    


    干杯

    Time
    列是时间数据类型还是VARCHAR?@riggsfully它是一个datetime然后该查询没有生成该输出???@riggsfully它是一个datetime,但是我使用下面的方法将它转换为时间字符(max(Time),'HH24:MI'),以便向我们显示您正在运行的实际查询。伪代码将得到伪答案我也尝试过,排序仍然不起作用。这就是为什么我在考虑使用concatation对数据进行排序我在使用Oracle,我更新了问题中的标记