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 39494 게시물 읽기
No. 39494
ROW 값 합치기에 대한 질문
작성자
이상호(ichyahree)
작성일
2012-06-15 09:08ⓒ
2012-06-15 09:09ⓜ
조회수
8,713

 안녕하십니까 오라클 초초보입니다. DB사랑넷과 같은 좋은 공간을 발견해서 정말 기뻤습니다.

그런데 도저히 생각해도 막히는 부분이 있어 질문드립니다.
 
 
현재는 이렇게 나옵니다.
KEY값  /   일자      /      이름      /     내용       /     구분1     /    구분2
 
1111   2012/06/15      홍길동          ㅇㅇㅇ             ㅇ             
1111   2012/06/15      홍길동          ㅇㅇㅇ                           ㅇ               
 
 
이것을 하나로 만들어 
 
KEY값   /       일자      /    이름      /     내용      /     구분1     /    구분2
 
1111   2012/06/15      홍길동          ㅇㅇㅇ             ㅇ             ㅇ
 
이렇게 만들고 싶습니다. 
 
테이블 A와 B를 조인하여 만드는 것인데, 
A에는 KEY값, 일자, 이름이 있습니다.
B에는 내용, 구분값이 있습니다.
 
구분값이 1이면 ㅇ를 출력하게 하고, 2이면 '구분2' 부분에 ㅇ를 출력하게 하려 합니다.
 
이게 조인하는 방법의 문제인 것인지(지금은 아우터 조인 사용하고 있습니다)
아니면 다른 조건값을 주어야 하는 것인지 모르겠습니다. 
 
너무 답답해하지 마시고 도움 주시면 정말 감사하겠습니다^^;;
이 글에 대한 댓글이 총 8건 있습니다.

SELECT KEY값, 일자, 이름, 내용
     , MIN(구분1) 구분1
     , MIN(구분2) 구분2
  FROM 테이블
 GROUP BY KEY값, 일자, 이름, 내용
;

마농(manon94)님이 2012-06-15 10:59에 작성한 댓글입니다.

 마농님 댓글 감사합니다. 

저 역시 마농님처럼 사용해 보았으나 그룹에 B테이블의 컬럼이 추가되면 무조건 2개로 쪼개져서 나오네요. 

반대로 A테이블만 GROUP BY 에 묶으면 하나의 ROW로 합쳐져 나오구요. 무엇이 원인일까요??

B테이블에 구분값이 포함되어 있어서 묶이지 않는 것 같은데 이 문제가 너무 궁금합니다.

이상호(ichyahree)님이 2012-06-15 11:05에 작성한 댓글입니다.

사용하신 쿼리를 올려 보세요.

마농(manon94)님이 2012-06-15 11:11에 작성한 댓글입니다.
SELECT      
      , A.KEY값 
      , A.일자
      , A.이름
      , B.내용    
      , MIN(CASE WHEN B.구분값 = '1' THEN 'O'  ELSE ' ' END)  구분1
      , MIN(CASE WHEN B.구분값 = '2' THEN 'O'  ELSE ' ' END)  구분2
FROM  A, B    
WHERE A.KEY값 = B.KEY값
GROUP BY A.KEY값 ,A.일자, A.이름, B.내용;
 
이렇게 넣어봤고, MAX로도 넣어봤는데 값은 동일합니다. 
이상호(ichyahree)님이 2012-06-15 11:23에 작성한 댓글입니다.
이 댓글은 2012-06-15 14:20에 마지막으로 수정되었습니다.

위 질문에서 b.내용 의 값이 서로 같아 보이는데요.

실제로는 다른 모양이네요?

서로 다른 값이 들어있다면?

이걸 어찌 처리하실 것인지를 먼저 결정해주세요.

1. 둘중 하나만 선택할 것인지? 선택기준은?

2. 둘을 연결하여 하나로 보여줄 것인지?

3. 구분값에 따라 두개 컬럼으로 나누어 보여줄지?

4. 아예 내용은 빼버릴 것인가?

마농(manon94)님이 2012-06-15 14:05에 작성한 댓글입니다.

 죄송합니다... 말씀하신 게 어떤 말씀이신지 이해가 잘 안갑니다.

B.내용은 B테이블에만 존재하는 건데 그게 서로 다른 값이 들어갈 수 있는지...

 

테스트 해보니 B.내용이 그룹에 들어가면 2개로 나누어지고, B테이블 값이 그룹에 없으면 

1개로 통합이 되네요.... 아무래도 제 접근법이 틀린 것 같습니다.

이상호(ichyahree)님이 2012-06-15 14:54에 작성한 댓글입니다.

그룹바이에 대한 이해가 부족하신듯 합니다.

그룹바이는 중복된 값들을 하나로 합쳐주는 역할 을 합니다.

그룹바이 절에 "b.내용"이 들어감으로 인해 하나로 합쳐지지 않는다면?

두개 행의 "b.내용"이 서로 다르다는 말이며, 이는 한줄로 합칠 수 없다는 말입니다.

한줄로 나오길 원하신다면? 그룹바이절에서 "b.내용"을 빼셔야 하구요.

그룹바이절에 포함되지 않은 다른 항목들을 하나로 합쳐서 보여주려면?

그룹함수를 사용해서 합계, 평균, 최소, 최대 등등의 연산을 해서 보여주는 방법 외에

있는 그대로의 값을 보여줄 방법은 없습니다.

두개의 값을 그대로 하나로 보여주세요? 이는 말이 안되지요.

마농(manon94)님이 2012-06-15 15:05에 작성한 댓글입니다.

 예 조언 감사합니다^^

 

다시 한번 고민해보겠습니다

이상호(ichyahree)님이 2012-06-15 15:17에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39497INBOUND_CONNECT_TIMEOUT_LISTENER=0 옵션 중에서.. [1]
유용태
2012-06-17
4608
39496jchar <-> char (in C)
고은진
2012-06-15
3699
39495오라클 10g 디비 백업한 계정 패스워드 분실하였습니다. [1]
임두환
2012-06-15
4222
39494ROW 값 합치기에 대한 질문 [8]
이상호
2012-06-15
8713
39493파티션 관련 질문 좀 드릴게요.. [3]
김성준
2012-06-12
4169
39492ora-06532 에러관련 문의 드립니다. [1]
배호영
2012-06-11
6592
39491[긴급] 테이블스페이스 생성 관련 문의
초보자
2012-06-11
4243
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다