간단한듯 한데 어렵네요
즉 어떤 값이 'Y'이면 DESC로 'N'이면 ASC로 ORDER BY되어야 합니다.
IND | SEQ | 노선 | |
S | 1 | AA | |
S | 2 | BB | |
U | 1 | CC | |
U | 2 | DD |
결과값
IF 어떤값 = 'N'이면 IND가 'U'인 것을
CC - DD
DD - NULL
IF 어떤 값 ='Y'이면 IND가 'S'인 것을
BB-AA
AA-NULL
이렇게 나오면 되는데
SELECT 노선 , LEAD(노선) OVER(ORDER BY SEQ ASC) WHERE IND='U' AND 어떤값 = 'N'
UNION ALL
SELECT 노선, LEAD(노선) OVER(ORDER BY SEQ DESC) WHERE IND='S' AND 어떤값='Y'
UNION ALL 없이 ORDER BY절의 DESC, ASC를 조건에 따라서 변경할 수 있을까요?
WITH t AS ( SELECT 'S' ind, 1 seq, 'AA' 노선 FROM dual UNION ALL SELECT 'S', 2, 'BB' FROM dual UNION ALL SELECT 'U', 1, 'CC' FROM dual UNION ALL SELECT 'U', 2, 'DD' FROM dual ) SELECT 노선 , LEAD(노선) OVER(ORDER BY seq * DECODE(:어떤값, 'N', 1, 'Y', -1)) 다음노선 FROM t WHERE ind = DECODE(:어떤값, 'N', 'U', 'Y', 'S') ;