SQL Order By用Case自定义排序后添加sortest_test_date二级降序的方法
解决方法
直接在原有ORDER BY的CASE排序规则后,新增二级排序规则即可,多个排序规则用英文逗号分隔,优先级按书写顺序从高到低。你需要新增的内容为sortest_test_date DESC。
修改后的完整SQL
SELECT stvtesc_desc testname, nvl(sortest_test_score, '-') testscore, nvl(sortest_tesc_code, ' ') placement, nvl(SORTEST_TSRC_CODE, ' ') method_cocc, nvl(TO_CHAR(sortest_test_date,'DD-MON-YYYY'),' - ') testdate FROM stvtesc, sortest_add WHERE (stvtesc_vr_msg_no <> '999' or stvtesc_vr_msg_no is null) AND sortest_tesc_code not in ('CASM','CASR','CASW') AND sortest_tesc_code = stvtesc_code AND sortest_pidm = testpidm ORDER BY case when sortest_tesc_code = 'PLM' then 1 when sortest_tesc_code = 'PLW' then 2 when sortest_tesc_code = 'MEX' then 3 when sortest_tesc_code = 'WEX' then 4 when sortest_tesc_code = 'BWC' then 5 when sortest_tesc_code = 'BWX' then 6 when sortest_tesc_code = 'OOC' then 7 when sortest_tesc_code = 'HSRT' then 8 when sortest_tesc_code like 'TE%' then 9 when sortest_tesc_code = 'COMP' then 10 end, sortest_test_date DESC;
修改后相同sortest_tesc_code的记录会按测试日期从新到旧排序,你给出的示例中PLM的三条记录会调整为2020-05-20、2019-05-15、2018-04-14的顺序,符合预期要求。
内容的提问来源于stack exchange,提问作者user3352171
相关产品推荐
相关产品推荐

