선택적 정렬 0 1 500

by 천우신쭝 [2018.12.27 14:48:08]


간단한듯 한데 어렵네요

즉 어떤 값이 '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를 조건에 따라서 변경할 수 있을까요?

by 마농 [2018.12.27 15:47:10]
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')
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입