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 39109 게시물 읽기
No. 39109
1:1 1:N N:1 확인 쿼리 문의
작성자
쿼리
작성일
2011-11-18 09:52
조회수
4,385

1:1 1:N N:1 확인 쿼리 문의

1번경우

1          2  

1          3

2번 경우

2          1

3          1

3번 경우

1          2

3          4

 

위처럼 칼럼 두개를 비교해서 관계를 나타내려 하는데요

1번경우는 1:N  2번경우는 N:1 3번은 1:1 이렇게요.

쿼리를 어떻게 짜야하나요?
 

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

WITH t AS
(
SELECT 1 gb, 1 c1, 2 c2 FROM dual
UNION ALL SELECT 1, 1, 3 FROM dual
UNION ALL SELECT 2, 2, 1 FROM dual
UNION ALL SELECT 2, 3, 1 FROM dual
UNION ALL SELECT 3, 1, 2 FROM dual
UNION ALL SELECT 3, 3, 4 FROM dual
UNION ALL SELECT 4, 1, 3 FROM dual
UNION ALL SELECT 4, 1, 4 FROM dual
UNION ALL SELECT 4, 2, 4 FROM dual
)
SELECT gb
     , DECODE(cnt, cnt_1, '1', 'N')
    || ':'
    || DECODE(cnt, cnt_2, '1', 'N')
    AS relation
  FROM (SELECT gb
             , COUNT(*) cnt
             , COUNT(DISTINCT c1) cnt_1
             , COUNT(DISTINCT c2) cnt_2
          FROM t
         GROUP BY gb
         ORDER BY gb
        )
;

마농(manon94)님이 2011-11-18 16:16에 작성한 댓글입니다.

with t as (
                    select 1 gb, 1 c1, 2 c2 from dual
    union all select 1, 1, 3 from dual
    union all select 2, 2, 1 from dual
    union all select 2, 3, 1 from dual
    union all select 3, 1, 2 from dual
    union all select 3, 3, 4 from dual
    union all select 4, 1, 3 from dual
    union all select 4, 1, 4 from dual
    union all select 4, 2, 4 from dual
    union all select 5, 1, 3 from dual
    union all select 5, 1, 5 from dual
    union all select 5, 1, 7 from dual
    union all select 5, 1, 2 from dual
    union all select 5, 1, 9 from dual
    union all select 5, 1, 4 from dual
)
select gb
      ,decode(cnt,decode(cnt_1
                        ,cnt_2,cnt_1
                        ,cnt_2)
                 ,'1','N'
       )
       || ':' ||
       decode(cnt,decode(cnt_2
                        ,cnt_1,cnt_2
                        ,cnt_1)
                 ,'1','N'
       )
       AS relation
  from (
    select gb
          ,count(*) cnt
          ,count(distinct c1) cnt_1
          ,count(distinct c2) cnt_2
      from t
     group by gb
     order by gb
  )
;
 

넓은세상님이 2012-02-20 10:56에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39112일일 일련번호 쿼리가 궁금합니다. [1]
천세훈
2011-11-21
4300
39111테이블 파티션 관련 질문 partiton 파티셔닝
미니
2011-11-20
4278
39110필드를 수정하고 싶습니다. [1]
오라초보
2011-11-18
4067
391091:1 1:N N:1 확인 쿼리 문의 [2]
쿼리
2011-11-18
4385
39107oracle 함수질문입니다.. [2]
추평사
2011-11-17
4128
39106Locking 메커니즘에 대한 질문 [1]
oracle
2011-11-17
4293
39105[질문] 오라클에도 DB Profiler 같은게 있나요?
궁금이
2011-11-17
3679
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다