정렬관련 작업하다가 막히는 부분이 있어서 질문 드립니다.
프로지서 변수로 v_S1 등의 변수를 받아서 정렬을 처리하고 있습니다.
그런데 변수의 갯수가 많아지면서 쿼리가 너무 길어지는게 보기가 안좋더라고요...
변수를 받을 때 정렬 문자열 자체를 파라메터 변수로 받아서 처리하는 방법이 있을까요?
SELECT * FROM tmp_Table ORDER BY
(CASE WHEN SUBSTR(v_S1,-1) = 'A' THEN
(CASE SUBSTR(v_S1,1,INSTR(v_S1,'|',1)-1)
WHEN 'DEPT' THEN DECODE(i_DEPTTYPE, 'DutDeptCd', DUTDEPTNM, POSDEPTNM)
WHEN 'DIST' THEN OCPDISTNM
WHEN 'TYPE' THEN OCPTYPENM
WHEN 'GRD' THEN OCPGRDNM
WHEN 'POS' THEN OCPPOSNM
END)
END) ASC,
(CASE WHEN SUBSTR(v_S1,-1) = 'D' THEN
(CASE SUBSTR(v_S1,1,INSTR(v_S1,'|',1)-1)
WHEN 'DEPT' THEN DECODE(i_DEPTTYPE, 'DutDeptCd', DUTDEPTNM, POSDEPTNM)
WHEN 'DIST' THEN OCPDISTNM
WHEN 'TYPE' THEN OCPTYPENM
WHEN 'GRD' THEN OCPGRDNM
WHEN 'POS' THEN OCPPOSNM
END)
END) DESC,