조건으로 정렬 처리하기 0 1 617

by 밥하는남자 [SQL Query] [2018.07.18 12:51:56]


안녕하세요. 쿼리 작성하는데 고수님들 도와주세요 -0-

데이터는 아래와 같습니다.

WITH t AS
(
SELECT 'AA' id, '1' s0, '0' s1, '0' s2 FROM dual
UNION ALL SELECT 'BB', '1', '0', '1' FROM dual
UNION ALL SELECT 'CC', '0', '1', '0' FROM dual
UNION ALL SELECT 'DD', '0', '0', '1' FROM dual
UNION ALL SELECT 'EE', '1', '1', '1' FROM dual
UNION ALL SELECT 'FF', '0', '0', '0' FROM dual
)

위 데이터를 정렬해야하는데요

s0, s1, s2 컬럼 값이 1인 데이터를 위로 보여주고 싶어요. (컬럼 우선순위는 s0,s1,s2 순서고요.)

어떻게 좋은 방법이 있을까요?

추가적으로 1이 많이 들어가 있는 순서로도 가능할까요? 

 

 

 

by 마농 [2018.07.18 12:57:03]
WITH t AS
(
SELECT 'AA' id, '1' s0, '0' s1, '0' s2 FROM dual
UNION ALL SELECT 'AA', '1', '0', '0' FROM dual
UNION ALL SELECT 'AA', '0', '1', '0' FROM dual
UNION ALL SELECT 'AA', '0', '0', '1' FROM dual
UNION ALL SELECT 'AA', '0', '0', '0' FROM dual
)
SELECT *
  FROM t
 ORDER BY s0 DESC
        , s1 DESC
        , s2 DESC
;
-- 추가 : 1 이 많은 순서
SELECT *
  FROM t
 ORDER BY s0 + s1 + s2 DESC
;

 

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