先按 month week day 排序, 然后 act plan goal 排序 出来就是正常的顺序啊

with x as(
select 'M' as c_date,'A' as c_type,100 as je from dual
union all
select 'M' as c_date,'B' as c_type,30 as je from dual
union all
select 'M' as c_date,'C' as c_type,70 as je from dual
union all
select 'W' as c_date,'A' as c_type,100 as je from dual
union all
select 'W' as c_date,'B' as c_type,30 as je from dual
union all
select 'W' as c_date,'C' as c_type,70 as je from dual
union all
select 'D' as c_date,'B' as c_type,30 as je from dual
union all
select 'D' as c_date,'C' as c_type,70 as je from dual
)
selecT * from x
order by case when c_date='M' then '01'
when c_date='W' then '02'
when c_date='D' then '03' end,
case when c_type='A' then '01'
when c_type='B' then '02'
when c_type='C' then '03' end