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 34978 게시물 읽기
No. 34978
특정 컬럼의 중복을 제거하고 싶습니다.
작성자
신성욱
작성일
2008-12-16 17:14ⓒ
2008-12-16 17:50ⓜ
조회수
3,319


답변 감사드립니다. 제가 사용하고자 하는 바와는 조금 다른듯 하여


실제 제가 사용하는 테이블 다시 올립니다.


그런데 ID에 해당하는 항목이 셀수 없이 많고 수시로 변화되는 항목입니다. 


실제 테이블 데이터는 다음과 같습니다. 


gruop 부분은 말그래도 그룹을 정의하기위한 guid입니다. 그리고 grouporder는 그룹내의 순서 입니다. 


이 테이블을 이용하여 GROUP 과  GROUPORDER 의 순서를 지키면서 아이디의 중복을 없에고자 합니다.


                                                                       

다음 쿼리를 수행한 결과 입니다. ㅜㅜ                                   

                                                                       

SELECT GROUPODER, GROUP, ID FROM COM_ID ORDER BY GROUP, GROUPORDER;    

                                                                       

                                                                       

grouporder    group                                                                ID   

                                                                       

26                0D226EA9BF3746D4ADD73E52ECFB4CEB                733914

27                0D226EA9BF3746D4ADD73E52ECFB4CEB                733914

28                0D226EA9BF3746D4ADD73E52ECFB4CEB                733816

29                0D226EA9BF3746D4ADD73E52ECFB4CEB                733816

30                0D226EA9BF3746D4ADD73E52ECFB4CEB                733816

31                0D226EA9BF3746D4ADD73E52ECFB4CEB                733816

32                0D226EA9BF3746D4ADD73E52ECFB4CEB                733816

33                0D226EA9BF3746D4ADD73E52ECFB4CEB                733816

2                 152483EA7FC64607A8F08FB96804DE44                    733506

3                 152483EA7FC64607A8F08FB96804DE44                    733506

4                 152483EA7FC64607A8F08FB96804DE44                    736766

5                 152483EA7FC64607A8F08FB96804DE44                    736766

6                 152483EA7FC64607A8F08FB96804DE44                    736766

7                 152483EA7FC64607A8F08FB96804DE44                    733498

8                 152483EA7FC64607A8F08FB96804DE44                    736766

9                 152483EA7FC64607A8F08FB96804DE44                    736766

10                152483EA7FC64607A8F08FB96804DE44                   733498

12                1785466B14F54C6A9A4A14D5D5E5A8EE                  733582

13                1785466B14F54C6A9A4A14D5D5E5A8EE                  733582

14                1785466B14F54C6A9A4A14D5D5E5A8EE                  733582

15                1785466B14F54C6A9A4A14D5D5E5A8EE                  733582

16                1785466B14F54C6A9A4A14D5D5E5A8EE                  736737

17                1785466B14F54C6A9A4A14D5D5E5A8EE                  736737

18                1785466B14F54C6A9A4A14D5D5E5A8EE                  736737

19                1785466B14F54C6A9A4A14D5D5E5A8EE                  737530

20                1785466B14F54C6A9A4A14D5D5E5A8EE                  737530

21                1785466B14F54C6A9A4A14D5D5E5A8EE                  737530

22                1785466B14F54C6A9A4A14D5D5E5A8EE                  733457

23                1785466B14F54C6A9A4A14D5D5E5A8EE                  733457

24                1785466B14F54C6A9A4A14D5D5E5A8EE                  733457

25                1785466B14F54C6A9A4A14D5D5E5A8EE                  733457

26                1785466B14F54C6A9A4A14D5D5E5A8EE                  733457

27                1785466B14F54C6A9A4A14D5D5E5A8EE                  753815

28                1785466B14F54C6A9A4A14D5D5E5A8EE                  753815

29                1785466B14F54C6A9A4A14D5D5E5A8EE                  753815

30                1785466B14F54C6A9A4A14D5D5E5A8EE                  753815

31                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

32                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

33                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

34                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

35                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

36                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

37                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

38                1785466B14F54C6A9A4A14D5D5E5A8EE                  763458

1                 1A88BF43B0074535B150FA576B73BB9D                    740022

2                 1A88BF43B0074535B150FA576B73BB9D                740022

3                 1A88BF43B0074535B150FA576B73BB9D                740022

4                 1A88BF43B0074535B150FA576B73BB9D                740022

5                 1A88BF43B0074535B150FA576B73BB9D                740022

6                 1A88BF43B0074535B150FA576B73BB9D                740022

7                 1A88BF43B0074535B150FA576B73BB9D                740024

8                 1A88BF43B0074535B150FA576B73BB9D                740024

9                 1A88BF43B0074535B150FA576B73BB9D                740024

10                1A88BF43B0074535B150FA576B73BB9D                740024

11                1A88BF43B0074535B150FA576B73BB9D                740024

12                1A88BF43B0074535B150FA576B73BB9D                738872

13                1A88BF43B0074535B150FA576B73BB9D                738872

14                1A88BF43B0074535B150FA576B73BB9D                738872

15                1A88BF43B0074535B150FA576B73BB9D                733716

16                1A88BF43B0074535B150FA576B73BB9D                733716

17                1A88BF43B0074535B150FA576B73BB9D                733716

18                1A88BF43B0074535B150FA576B73BB9D                733716


위 결과에서 id부분이 중복되는 컬럼을 제거할 수 있는 방법 부탁드립니다. 





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

order by 다음에 decode나 case문을 사용해서 [임의정렬]이 가능합니다

order by DECODE(book,'Y','1','B','2','U','3','A','4')

이렇게 하면, book 컬럼의 Y 값이 정렬될 때는 1 로 치환되어 가장 앞에 오게됩니다.

훈님이 2008-12-16 17:26에 작성한 댓글입니다.
이 댓글은 2008-12-16 17:27에 마지막으로 수정되었습니다. Edit
with tmp as (
select 'a' grp,   '1' ord,      '전화' goods from dual union all
select 'a' grp,   '2' ord,      '전화' goods from dual union all
select 'a' grp,   '3' ord,      '다리' goods from dual union all
select 'a' grp,   '4' ord,      '세탁' goods from dual union all
select 'a' grp,   '5' ord,      'TV' goods from dual union all
select 'a' grp,   '6' ord,      'TV' goods from dual union all
select 'a' grp,   '7' ord,      '전화' goods from dual union all
select 'b' grp,   '1' ord,      '어항' goods from dual union all
select 'b' grp,   '2' ord,      '어항' goods from dual union all
select 'b' grp,   '3' ord,      '소라' goods from dual union all
select 'b' grp,   '4' ord,      '자갈' goods from dual union all
select 'b' grp,   '5' ord,      '수초' goods from dual
)
select grp, min(ord), goods
  from tmp
 group by grp, goods
 order by grp, min(ord), goods

맞을라나 모르겠네요..ㅎㅎ;
김기현(dndnddl)님이 2008-12-16 17:31에 작성한 댓글입니다.

답변감사드립니다.

하지만 제가 원하는 답이 아닌듯보입니다. ㅜㅜ 

아래에 다시 실제 테이블 데이터를 올렸습니다. 

다시한번 도움 부탁드립니다.

신성욱님이 2008-12-16 17:46에 작성한 댓글입니다. Edit
with tmp as (
select '26' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733914' id from dual union all
select '27' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733914' id from dual union all
select '28' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733816' id from dual union all
select '29' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733816' id from dual union all
select '30' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733816' id from dual union all
select '31' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733816' id from dual union all
select '32' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733816' id from dual union all
select '33' group_order,  '0D226EA9BF3746D4ADD73E52ECFB4CEB' group_nm, '733816' id from dual union all
select '2' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '733506' id from dual union all
select '3' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '733506' id from dual union all
select '4' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '736766' id from dual union all
select '5' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '736766' id from dual union all
select '6' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '736766' id from dual union all
select '7' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '733498' id from dual union all
select '8' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '736766' id from dual union all
select '9' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '736766' id from dual union all
select '10' group_order,  '152483EA7FC64607A8F08FB96804DE44' group_nm, '733498' id from dual union all
select '12' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733582' id from dual union all
select '13' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733582' id from dual union all
select '14' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733582' id from dual union all
select '15' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733582' id from dual union all
select '16' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '736737' id from dual union all
select '17' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '736737' id from dual union all
select '18' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '736737' id from dual union all
select '19' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '737530' id from dual union all
select '20' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '737530' id from dual union all
select '21' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '737530' id from dual union all
select '22' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733457' id from dual union all
select '23' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733457' id from dual union all
select '24' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733457' id from dual union all
select '25' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733457' id from dual union all
select '26' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '733457' id from dual union all
select '27' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '753815' id from dual union all
select '28' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '753815' id from dual union all
select '29' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '753815' id from dual union all
select '30' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '753815' id from dual union all
select '31' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '32' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '33' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '34' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '35' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '36' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '37' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '38' group_order,  '1785466B14F54C6A9A4A14D5D5E5A8EE' group_nm, '763458' id from dual union all
select '1' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740022' id from dual union all
select '2' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740022' id from dual union all
select '3' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740022' id from dual union all
select '4' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740022' id from dual union all
select '5' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740022' id from dual union all
select '6' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740022' id from dual union all
select '7' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740024' id from dual union all
select '8' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740024' id from dual union all
select '9' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740024' id from dual union all
select '10' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740024' id from dual union all
select '11' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '740024' id from dual union all
select '12' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '738872' id from dual union all
select '13' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '738872' id from dual union all
select '14' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '738872' id from dual union all
select '15' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '733716' id from dual union all
select '16' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '733716' id from dual union all
select '17' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '733716' id from dual union all
select '18' group_order,  '1A88BF43B0074535B150FA576B73BB9D' group_nm, '733716' id from dual
)
select min(group_order), group_nm, id from tmp
 group by group_nm, id
 order by group_nm, to_number(min(group_order))


제가 머리가 좀 딸려서 직접 해보지 않으면 모르겠어서요..ㅋㅋ; 

일단 group은 컬럼 명으로 사용할수 없어서;; group_nm으로 바꿔서 작성했구요

group내 id 중복 제거는 group과 id로 group by 지은 것으로 충분하다고 생각합니다.

다음 문제는 정렬 문제인데 order by 절에서 group순으로 정렬하고 다시 그 안에서 group_order로 정렬 했습니다. 

정렬 부분에 id에 대한 언급이 없어서 빼버렸구요 

제가 order 를 문자열로 써서 정렬이 제대로 안되는것 같아 to_number씌워서 정렬했습니다.
(group_order가 number타입이라서나 자릿수 맞춰서 0으로 채워넣은 문자열이라면 넣을 필요 없습니다.)

맞지 않으면 맞지 않는 부분을 첨언해서 알려주세요~

그냥 원하는 답이 아니라고 하시면 어떤부분을 다르게 원하시는건지 알수가 없어요^^;

김기현(dndnddl)님이 2008-12-16 18:25에 작성한 댓글입니다.

아이디의 중복을 제거한다고 하셔서 좀 헷갈렸네요;
정확한 설명없이 그냥 원하는 답이 아니라고 하시면, 답변하기 어려워요. ㅠ

아마도, 동일한 컬럼값을 생략하고, 내용이  바뀔때만 한번씩 컬럼값을 보여주는 것을 
묻고자 하는 거지요?

/* Formatted on 2008/12/16 19:42 (Formatter Plus v4.8.8) */
SELECT   a.groupoder,
         a.g,
         DECODE (a.i, b.i, NULL, a.i) i
FROM     (SELECT ROWNUM cnt1,
                 groupoder,
                 g,
                 i
          FROM   com_id) a,
         (SELECT ROWNUM cnt2,
                 i
          FROM   com_id) b
WHERE    b.cnt2(+) = a.cnt1 - 1
ORDER BY A.G, A.I DESC;
석훈님이 2008-12-16 19:48에 작성한 댓글입니다. Edit

훈님, 김기현님, 석훈님 감사드립니다. 

급한 마음에 너무 두서없이 질문을 드린것 같습니다. 

말씀해주신 방법으로 해결하엿습니다. ^^

제가 말재주가 없는 편이라 ㅜㅜ

다시한번 감사드립니다. 

연말연시 건강 조심하시구요. 

행복한  연말 되세요.

신성욱님이 2008-12-17 09:25에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
34983백업과 복구시 archive 관련 질문드립니다., [4]
윤철민
2008-12-17
13021
34981백업 정책을 만들고 있는데 궁금한 점이 생겼습니다!!
2008-12-17
2297
34980LONG 타입 데이타 등록시 에러
오라클
2008-12-16
2590
34978특정 컬럼의 중복을 제거하고 싶습니다. [6]
신성욱
2008-12-16
3319
34977view테이블에 컬럼 추가 [1]
박성숙
2008-12-16
7103
34976import 에러 [3]
난감한상황
2008-12-16
6017
34975ORA-00918: 열의 정의가 애매합니다 [2]
박주영
2008-12-16
12631
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다