根据计算值对列进行排序

时间:2019-05-14 11:02:12

标签: sql database oracle

我在一栏中有以下数值

    Q1 2018
    Q2 2018
    Q3 2018
    Q4 2018
    feb 2018
    mar 2018
    Q1 2019
    Q2 2019
    Q3 2019
    jan 2018
    sep 2018
    dec 2018
    jan 2019
    feb 2019
    mar 2019

我有上述值,这些值是根据某些参数计算得出的。对于某些数据,该值与月份有关,对于某些数据,其与季度有关。

当所有值都在同一列上时,是否可以使用order对其进行排序,这意味着应该对月度值和季度值进行排序。

输出应该像

Q1 2018
Q2 2018
Q3 2018
Q4 2018
Q1 2019
Q2 2019
Q3 2019
jan 2018
feb 2018
mar 2018
sep 2018
dec 2018
jan 2019
feb 2019
mar 2019

1 个答案:

答案 0 :(得分:1)

我认为这可以满足您的要求

order by len(col),         -- put the quarters first
         substr(col, 4),   -- order by year
         (case when col not like 'Q%'
               then to_date(col, 'MON YYYY') 
          end),            -- order months by date
         col               -- order quarters by quarter