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 40807 게시물 읽기
No. 40807
모든 테이블에 하나라도 없는 값은 테이블명 출력?
작성자
궁금이(kimscom)
작성일
2015-05-27 14:03ⓒ
2015-05-27 14:07ⓜ
조회수
7,416

 

아래와 같이 여러테이블이 있는데 이중 같은 종류의 값인데 컬럼명이 다릅니다.

이들 테이블의 컬럼의 값에서 전체 값중 없는 값이 있는 테이블명과 값을 추출하고자 합니다.

 

   A테이블             B테이블            C테이블          D테이블      .....
------------    ------------    ------------    ------------    
   GUBUN                KIND                SECT             GUBUN     .......
------------    ------------    ------------    ------------   
       K1                    K1                    K1                  K1
       K2                    K1                    K2                  K1
       S1                    K2                    S1                  K2
       S1                    S1                    S2                  K2
       S2                    S2                    S1                  S2

위 예제의 경우 D테이블, S1 이 출력되야 하는거죠.. 

SELECT 어쩌구저쩌구... 결과는 ========>>   D    S1 

즉, S1이 다른 테이블엔 모두 있는데 D테이블에만 없거든요.

쉽게 추출하는 방법이 없을까요? 

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

WITH a AS
(
SELECT 'K1' gubun FROM dual
UNION ALL SELECT 'K2' FROM dual
UNION ALL SELECT 'S1' FROM dual
UNION ALL SELECT 'S1' FROM dual
UNION ALL SELECT 'S2' FROM dual
)
, b AS
(
SELECT 'K1' kind FROM dual
UNION ALL SELECT 'K1' FROM dual
UNION ALL SELECT 'K2' FROM dual
UNION ALL SELECT 'S1' FROM dual
UNION ALL SELECT 'S2' FROM dual
)
, c AS
(
SELECT 'K1' sect FROM dual
UNION ALL SELECT 'K2' FROM dual
UNION ALL SELECT 'S1' FROM dual
UNION ALL SELECT 'S2' FROM dual
UNION ALL SELECT 'S1' FROM dual
)
, d AS
(
SELECT 'K1' gubun FROM dual
UNION ALL SELECT 'K1' FROM dual
UNION ALL SELECT 'K2' FROM dual
UNION ALL SELECT 'K2' FROM dual
UNION ALL SELECT 'S2' FROM dual
)
SELECT SUBSTR(
       REGEXP_REPLACE(',A,B,C,D'
       , LISTAGG(','||tb, '|') WITHIN GROUP(ORDER BY tb)
       ), 2) tb
     , v
  FROM (SELECT 'A' tb, gubun v FROM a
        UNION SELECT 'B', kind FROM b
        UNION SELECT 'C', sect FROM c
        UNION SELECT 'D', gubun FROM d
        ) x
 GROUP BY v
 HAVING COUNT(*) < 4
;

마농(manon94)님이 2015-05-27 17:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40810퀴즈입니다. 부분수열의 순열들을 모두 구하기 (공집합은 제외) [3]
김흥수
2015-05-29
8924
40809퀴즈입니다. SQL로 집합의 모든 순서관계 순서쌍 구하기 [4]
김흥수
2015-05-28
9093
40808퀴즈입니다. 공집합을 제외한 모든 멱집합의 원소를 출력하는 SQL [4]
김흥수
2015-05-27
8886
40807모든 테이블에 하나라도 없는 값은 테이블명 출력? [1]
궁금이
2015-05-27
7416
40806사용자로그 관리에 대해 여쭤봅니다. [2]
예진예랑
2015-05-26
7180
40805그룹 기준 횟수 카운트 문의 드립니다. [4]
김미림
2015-05-22
7832
40804시작점, 끝점 좌표를 가지고 연결관계 파악하기 [3]
슈렉
2015-05-21
8344
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다