2개의 컬럼 정렬 0 3 1,096

by 찌녜 정렬 [2015.03.19 15:35:24]


쿼릿.png (2,720Bytes)

안녕하세요.

현재 정렬 쿼리 작성 중 막히는 부분이 생겨서 질문글을 남겨봅니다.

현재 사용자의 가입과 탈퇴 이력을 SELECT하는 쿼리문을 작성중인데요,

첨부파일의 사진을 보시면 TERM_START_DT 와 TERM_END_DT 2개의 컬럼이 존재합니다.

제가 하려는 것이 무었이냐면, TERM_START_DT와 TERM_END_DT 2개의 컬럼을 동시에 오름차순으로 정렬하고자 합니다..

그렇게되면

1. 03/12/2015 - TERM_START_DT(가입)

2. 03/13/2015  - TERM_END_DT (탈퇴)

3. 03/19/2015 - TERM_START_DT(가입)

이런 순으로 정렬이 되기를 원하는데..

어떻게 쿼리를 짜야될지 고수님들 도와주세요 ㅠ..

 

by 비주류 [2015.03.19 15:59:15]
-- row는 2개인데 결과는 두 개 컬럼 값만 정렬해서 3~4개가 나오면 되는건가요?
SELECT term_start_dt dt FROM t
UNION ALL
SELECT term_end_dt dt FROM t WHERE term_end_dt IS NOT NULL
ORDER BY dt

-- 복제
SELECT  DECODE(lvl, 1, term_start_dt, term_end_dt) dt
FROM    t,
        (SELECT level lvl FROM DUAL CONNECT BY level <= 2)
WHERE   DECODE(lvl, 1, term_start_dt, term_end_dt) IS NOT NULL
ORDER BY dt

 


by 찌녜 [2015.03.19 16:21:07]

답변 너무너무 감사드립니다.

하단에 복제라는건 어떤 복제를 말씀하시는지 잘 모르겠어서 결국 Union All해주는 방식으로 적용했습니다 ㅠ


by 비주류 [2015.03.19 19:46:58]

row 2개 -> 출력 row 3개가 되어야 해서 2개(컬럼 개수, level <= 2)씩 복제후 조건을 준 것입니다.
복제와 관련해선 Cartesian product, cross join 등 사이트내의 강좌글도 참고해보세요~

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