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 41090 게시물 읽기
No. 41090
햐..아이디어가 전혀 생각나지 않아서..도움 부탁드립니다.
작성자
우태열(armadillo)
작성일
2016-02-27 14:31
조회수
8,771

 반갑습니다.

머리가 굳었나 봅니다. 전혀 생각이 나지 않아서 이렇게 질문 드립니다.

 

테이블에 데이타가 아래과 같이 들어있고

DV, FA, GRD, OWN

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

 

A    F1  H1   DES1

A    F1  H1   DES2

A    F1  H1   DES3

A    F1  K1   DES1

A    F1  K1   DES2

A    F1  K1   DES3

A    F1  S1   DES1

A    F1  S1   DES2

A    F1  S1   DES3

A    F2  H1   DES1

A    F2  H1   DES2

A    F2  H1   DES3

A    F2  K1   DES1

A    F2  K1   DES2

A    F2  K1   DES3

A    F2  S1   DES1

A    F2  S1   DES2

A    F2  S1   DES3

 

이것을 아래와 같이 나오게 하고싶은데..

즉 DV 컬럼을 기준으로 FA, GRD, OWN을 중복된 값들을 모두 제거하고 가져온것입니다.

 

DV,  FA, GRD, OWN

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

A    F1  H1   DES1

      F2   K1   DES2

             S1   DES3

 이래 저래 찾아서 해봐도

DV, FA, GRD, OWN

 

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

 A  F1  H1  DES1

                   DES2

                   DES3

           K1   DES1

                   DES2

                   DES3

           S1   DES1

                   DES2

                   DES3

.....

이런 형태로밖에 되지 않네요.

혹 어떻게 해야할지 대략은 방향이라도 부탁드리겠습니다.

 

즐거운 주말되소서.

 

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

;with tblA(DV,FA,GRD,OWN) As
(
      Select 'A','F1','H1','DES1' from DUAL Union All
      Select 'A','F1','H1','DES2' from DUAL Union All
      Select 'A','F1','H1','DES3' from DUAL Union All
      Select 'A','F1','K1','DES1' from DUAL Union All
      Select 'A','F1','K1','DES2' from DUAL Union All
      Select 'A','F1','K1','DES3' from DUAL Union All
      Select 'A','F1','S1','DES1' from DUAL Union All
      Select 'A','F1','S1','DES2' from DUAL Union All
      Select 'A','F1','S1','DES3' from DUAL Union All
      Select 'A','F2','H1','DES1' from DUAL Union All
      Select 'A','F2','H1','DES2' from DUAL Union All
      Select 'A','F2','H1','DES3' from DUAL Union All
      Select 'A','F2','K1','DES1' from DUAL Union All
      Select 'A','F2','K1','DES2' from DUAL Union All
      Select 'A','F2','K1','DES3' from DUAL Union All
      Select 'A','F2','S1','DES1' from DUAL Union All
      Select 'A','F2','S1','DES2' from DUAL Union All
      Select 'A','F2','S1','DES3' from DUAL 
)
,tbl1(DV,RN) As
(
      Select a.DV
            ,Row_Number() Over(Order By a.DV Asc) As rn
        From tblA a
    Group By a.DV
)
,tbl2(FA,RN) As
(
      Select a.FA
            ,Row_Number() Over(Order By a.FA Asc) As rn
        From tblA a
    Group By a.FA
)
,tbl3(GRD,RN) As
(
      Select a.GRD
            ,Row_Number() Over(Order By a.GRD Asc) As rn
        From tblA a
    Group By a.GRD
)
,tbl4(OWN,RN) As
(
      Select a.OWN
            ,Row_Number() Over(Order By a.OWN Asc) As rn
        From tblA a
    Group By a.OWN
)
      Select Max(a.DV)    As DV
            ,Max(a.FA)    As FA
            ,Max(a.GRD)   As GRD
            ,Max(a.OWN)   As OWN
        From (
                    Select a.DV   As DV
                          ,''     As FA
                          ,''     As GRD
                          ,''     As OWN
                          ,a.RN   As RN
                      From tbl1 a

                 Union All
                
                    Select ''     As DV
                          ,a.FA   As FA
                          ,''     As GRD
                          ,''     As OWN
                          ,a.RN   As RN
                      From tbl2 a

                 Union All
                
                    Select ''     As DV
                          ,''     As FA
                          ,a.GRD  As GRD
                          ,''     As OWN
                          ,a.RN   As RN
                      From tbl3 a

                 Union All
                
                    Select ''     As DV
                          ,''     As FA
                          ,''     As GRD
                          ,a.OWN  As OWN
                          ,a.RN   As RN
                      From tbl4 a
             ) a
     Group By a.RN
     Order By a.RN Asc
 

최한영(terry0515)님이 2016-02-29 10:53에 작성한 댓글입니다.

감사합니다.

이렇게는 생각을 못해봤습니다.

지금은 테스트할 상황이 못되어서,

내일 출근해서 확인해보고 활용해야겠네요.

다시한번 감사드립니다.

우태열(armadillo)님이 2016-03-01 08:14에 작성한 댓글입니다.

SELECT rn
     , MIN(dv ) dv
     , MIN(fa ) fa
     , MIN(grd) grd
     , MIN(own) own
  FROM (SELECT dv, fa, grd, own
             , ROW_NUMBER() OVER(
               PARTITION BY GROUPING_ID(dv, fa, grd, own)
               ORDER BY dv, fa, grd, own
               ) rn
          FROM tblA
         GROUP BY GROUPING SETS(dv, fa, grd, own)
        )
 GROUP BY rn
 ORDER BY rn
;

마농(manon94)님이 2016-03-02 10:09에 작성한 댓글입니다.
이 댓글은 2016-03-02 10:11에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41096표현이 가능할지.... [1]
블루이글
2016-03-08
7923
41095오라클 조회시 속도 느림 [1]
민주가인
2016-03-08
8491
41091리버스 엔지니어링 개념 관련 질문입니다. [1]
조동건
2016-02-28
8000
41090햐..아이디어가 전혀 생각나지 않아서..도움 부탁드립니다. [3]
우태열
2016-02-27
8771
41089오라클 접속 속도 문제 [1]
홍길동
2016-02-26
8681
41088SQL SERVER 2012에서의 PIVOT을 ORACLE11g에서 어떻게 변환 하나요?? [4]
Redical
2016-02-25
10394
41087수정1차) SP 선언시 매개변수를 데이터셋으로 받아서 처리 가능여부? [2]
권순환
2016-02-25
9052
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다