database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40214 게시물 읽기
No. 40214
쿼리질문 올려봅니다~
작성자
최규운(chlrbdns)
작성일
2013-07-31 13:51
조회수
6,253

select 한 결과가 아래 표와 같이 나옵니다. 

월요일 1
월요일 2
월요일 3
월요일 7
월요일 8
수요일 2
수요일 3
수요일 9

......

 

이 결과를 한줄로 

----------------------------------------------

월요일(1~3, 7~8) 수요일(2~3, 9)

----------------------------------------------

이렇게 표현할수 있을까요?

 

 

이 글에 대한 댓글이 총 2건 있습니다.

 WITH t(day, val) AS(

SELECT '월요일', 1 FROM dual UNION ALL
SELECT '월요일', 2 FROM dual UNION ALL
SELECT '월요일', 3 FROM dual UNION ALL
SELECT '월요일', 7 FROM dual UNION ALL
SELECT '월요일', 8 FROM dual UNION ALL
SELECT '수요일', 2 FROM dual UNION ALL
SELECT '수요일', 3 FROM dual UNION ALL
SELECT '수요일', 9 FROM dual
)
SELECT LISTAGG(day||'('||val||')', ' ') WITHIN
       GROUP(ORDER BY rn) val
  FROM (SELECT rn, day, LISTAGG(val, ',') WITHIN
                        GROUP(ORDER BY rn, val) val
          FROM (SELECT rn, day
                     , DECODE(MIN(val), MAX(val)
                     , TO_CHAR(MIN(val)), MIN(val)||'~'||MAX(val)) val
                  FROM (SELECT day, val
                             , DECODE(day, '월요일', 1, '화요일', 2
                                         , '수요일', 3, '목요일', 4
                                         , '금요일', 5, '토요일', 6
                                         , '일요일', 7) rn
                          FROM t
                         ORDER BY rn, val
                        )  
                 GROUP BY rn, day, val - ROWNUM
                )
         GROUP BY rn, day
        )
아린(arin76)님이 2013-07-31 18:24에 작성한 댓글입니다.
이 댓글은 2013-07-31 18:25에 마지막으로 수정되었습니다.

WITH t AS
(
SELECT '월요일' dy, 1 sq FROM dual
UNION ALL SELECT '월요일', 2 FROM dual
UNION ALL SELECT '월요일', 3 FROM dual
UNION ALL SELECT '월요일', 7 FROM dual
UNION ALL SELECT '월요일', 8 FROM dual
UNION ALL SELECT '수요일', 2 FROM dual
UNION ALL SELECT '수요일', 3 FROM dual
UNION ALL SELECT '수요일', 9 FROM dual
)
SELECT SUBSTR(
       XMLAGG(XMLELEMENT(z,' ',dy,'(',y,')')ORDER BY d).EXTRACT('//text()')
       , 2) z
  FROM (SELECT dy
             , INSTR('월화수목금토일', SUBSTR(dy, 1, 1)) d
             , SUBSTR(
               XMLAGG(XMLELEMENT(y,', ',x)ORDER BY grp).EXTRACT('//text()')
               , 3) y
          FROM (SELECT dy, grp
                     , MIN(sq)||DECODE(COUNT(*), 1, '', '~'||MAX(sq)) x
                  FROM (SELECT dy, sq
                             , sq
                             - ROW_NUMBER() OVER(PARTITION BY dy
                                                     ORDER BY sq) grp
                          FROM t
                        )
                 GROUP BY dy, grp
                )
         GROUP BY dy
        )
;

마농(manon94)님이 2013-07-31 18:33에 작성한 댓글입니다.
이 댓글은 2013-07-31 18:35에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
40217쿼리 문의드립니다..생각처럼 좀 안되네여 [7]
새하정
2013-08-01
7169
40216explain plan의 값 확인 [1]
초보디비
2013-07-31
6857
40215oracle에서 update 시 rownum 사용 [1]
어렵다
2013-07-31
6630
40214쿼리질문 올려봅니다~ [2]
최규운
2013-07-31
6253
40213오라클 tab키 설정 궁금증 [1]
정재영
2013-07-31
5961
40212오라클 11g Clob update 쿼리 어떻게 하나요? [1]
박주영
2013-07-30
8939
40211쿼리 좀 도와주세요! [1]
김정훈
2013-07-30
5917
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다