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 38279 게시물 읽기
No. 38279
고수님들 도와주세요!! 쿼리로 될 수 있을까요??
작성자
MyEeMa
작성일
2010-12-30 11:33ⓒ
2010-12-30 11:42ⓜ
조회수
3,465

with tbl as(
select '198845001' hk from dual union all
select '198845002' hk from dual union all
select '198845004' hk from dual union all
select '198945003' hk from dual union all
select '198945004' hk from dual union all
select '198945005' hk from dual union all
select '199045010' hk from dual union all
select '199045011' hk from dual union all
select '199045013' hk from dual union all
select '199145008' hk from dual union all
select '199145009' hk from dual union all
select '199145010' hk from dual union all
select '199245001' hk from dual union all
select '199245005' hk from dual union all
select '199345011' hk from dual union all
select '199345013' hk from dual union all
select '199345015' hk from dual
)
select a.hk1, hk2
  from
     (
       select distinct(substring(hk, 1, 4)) hk1
        from tbl
    where substring(hk, 1, 4) between 1980 and 1989
      )a
      ,
      (
       select distinct(substring(hk, 1, 4)) hk2
        from tbl
    where substring(hk, 1, 4) between 1990 and 1999
      )b;

제가 사용했던 쿼리는 이것인데 이걸로는 이런 데이터가 추출되지 않네요 ㅠ.ㅠ
쿼리로 방법이 있을까요?? (해당 쿼리는 mysql 짜여진 것입니다.)

hk 데이터는 2010년까지 들어있습니다. 2010년까지 다른 쿼리로 아래처럼 결과가 나오게 할 수 있나요??

   hk1         hk2
---------------------
 1988       1990
 1989       1991
 (null)       1992
 (null)       1993

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

with t as(
select '198845001' hk from dual union all
select '198845002' hk from dual union all
select '198845004' hk from dual union all
select '198945003' hk from dual union all
select '198945004' hk from dual union all
select '198945005' hk from dual union all
select '199045010' hk from dual union all
select '199045011' hk from dual union all
select '199045013' hk from dual union all
select '199145008' hk from dual union all
select '199145009' hk from dual union all
select '199145010' hk from dual union all
select '199245001' hk from dual union all
select '199245005' hk from dual union all
select '199345011' hk from dual union all
select '199345013' hk from dual union all
select '199345015' hk from dual
)
select rn
     , max(decode(grp, 1, yr)) hk1
     , max(decode(grp, 2, yr)) hk2
  from (
         select yr
              , dense_rank()over(order by grp) grp
              , row_number()over(partition by grp order by yr) rn
           from (
                  select distinct
                         substr(hk,1,3) grp
                       , substr(hk,1,4) yr
                    from t
                )
       )
 group by rn

知音(sunnylee72)님이 2010-12-30 12:25에 작성한 댓글입니다.
이 댓글은 2010-12-30 12:31에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
38282구분자가 있는 한필드의 결과를 세로로 [4]
짜집기
2010-12-30
5555
38281analyze 후 느려짐 [6]
궁금이
2010-12-30
4127
38280쿼리 중복건 내 집계 [2]
쿼리OTL
2010-12-30
3784
38279고수님들 도와주세요!! 쿼리로 될 수 있을까요?? [1]
MyEeMa
2010-12-30
3465
38278미사용 index 확인법? [1]
taiji
2010-12-30
3565
38277일수 계산 [2]
감사
2010-12-30
4100
38276[질문] 2개의 컬럼 데이터가 섞여 있는 테이블 조인 [3]
군쓰
2010-12-30
3009
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다