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 39993 게시물 읽기
No. 39993
여러칼럼에 중복된 것들만 퀴리?
작성자
쫑군(rucifer03)
작성일
2013-01-30 21:16
조회수
6,251

안녕하세요
질문드릴께요

주문번호랑 전화번호중 중복된 값이 있는것만 select 해 오려고 합니다.
아래처럼 주문번호가나 전화번호가 중복된 값이 있으면 옆에 (중) 이라고 중복 표시를 하려고합니다.

결과처럼 중복된것만 목록에 보여주려고 하는데 쿼리 좀 부탁드려요

좋은하루되세여.

 

 

번호     주문번호        전화번호        성명          상품

1              a1               031-01         박이름       냉장고
2              a4               02-02           이순신       밥상
3              a3               031-04         정인숙      노트북
4              a1               02-02           박순자      티비
5              a6               031-01         이말자      거울

 

결과


번호    주문번호     전화번호          성명           상품

1           a1(중)       031-01(중)        박이름      냉장고
4           a1(중)       02-02                박순자      티비
5           a6             031-01(중)        이말자      거울

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

with tmp as (
    select '1' ord_no, 'a1' col1, '031-01' col2, '박이름' b, '냉장고' c from dual
    union all select '2' ord_no, 'a4' col1, '02-02' col2, '이순신' b, '밥상' c from dual
    union all select '3' ord_no, 'a3' col1, '031-04' col2, '정인숙' b, '노트북' c from dual
    union all select '4' ord_no, 'a1' col1, '02-02' col2, '박순자' b, '티비' c from dual
    union all select '5' ord_no, 'a6' col1, '031-01' col2, '이말자' b, '거울' c from dual
)
select
    ord_no, max(col1), max(col2), max(b), max(c)
from (
    select
        t.ord_no, col1 || '(중)' col1,  col2 ,   t.b, t.c
    from tmp t
    where exists ( select 'x' from tmp a where a.ord_no <> t.ord_no and a.col1 = t.col1)
    union all
    select
        t.ord_no, col1 ,  col2 || '(중)',   t.b, t.c
    from tmp t
    where exists ( select 'x' from tmp a where a.ord_no <> t.ord_no and a.col2 = t.col2)
)
group by ord_no
order by ord_no
 

전영식(garam111)님이 2013-01-30 22:37에 작성한 댓글입니다.

WITH t AS
(
SELECT 1 no, 'a1' ord_no, '031-01' tel_no, '박이름' name, '냉장고' item FROM dual
UNION ALL SELECT 2, 'a4', '02-02' , '이순신', '밥상'   FROM dual
UNION ALL SELECT 3, 'a3', '031-04', '정인숙', '노트북' FROM dual
UNION ALL SELECT 4, 'a1', '02-02' , '박순자', '티비'   FROM dual
UNION ALL SELECT 5, 'a6', '031-01', '이말자', '거울'   FROM dual
)
SELECT no
     , ord_no || CASE WHEN ord_cnt > 1 THEN '(중)' END ord_no
     , tel_no || CASE WHEN tel_cnt > 1 THEN '(중)' END tel_no
     , name
     , item
  FROM (SELECT no
             , ord_no
             , tel_no
             , name
             , item
             , COUNT(*) OVER(PARTITION BY ord_no) ord_cnt
             , COUNT(*) OVER(PARTITION BY tel_no) tel_cnt
          FROM t
        )
 WHERE 1 < ANY(tel_cnt, ord_cnt)
 ORDER BY no
;

마농(manon94)님이 2013-01-31 09:00에 작성한 댓글입니다.

두분 답글 정말 감사드려요  ^^

쫑군(rucifer03)님이 2013-02-03 14:50에 작성한 댓글입니다.

저도 감사합니다. pk가 중복나는 문제로 걸러내야 했는데...님의 글로 해결되었습니다. 꾸벅

유은실(esyoo)님이 2013-04-16 15:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39996테이블간 복사 [1]
구경준
2013-02-05
5529
39995고수님들 부탁드려요 ㅠㅠ [1]
힘들힘들
2013-02-04
5512
39994LIKE '%%' 를 쓸때 %%안에쿼리를 쓰려면요? [1]
질문
2013-02-04
5841
39993여러칼럼에 중복된 것들만 퀴리? [4]
쫑군
2013-01-30
6251
39992마지막 문자를 판단하여 치환하는 쿼리 [1]
rapid
2013-01-29
5235
39991Row_number 의 order by 문의 [2]
정용석
2013-01-29
6038
39990jquery 테이블 리스트에 체크박스 선택 된 행 값 가져오기 [2]
바램
2013-01-28
24987
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다