안녕하세요. 쿼리 작성하는데 고수님들 도와주세요 -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이 많이 들어가 있는 순서로도 가능할까요?
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 ;