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 38630 게시물 읽기
No. 38630
간단한것 같은데 잘 모르겠네요 도움좀 부탁드립니다.
작성자
나그네
작성일
2011-06-22 20:15
조회수
4,370

A 테이블에

 

한 고객 번호가 여러건의 상품번호를 가지는 경우가 있고
한고객 번호가 단건의 상품번호를 가지는 경우가 있습니다.

첫번째에 언급했떤 데이터를 가져오고 싶은데요

대충 테이블 구조는
고객번호   상품번호  일련번호
   A                 123          1
   A                 123          2
   A                 123          3
   A                 122          1
   A                 122          2
   B                 122          1
   B                 122          2

이런식입니다.
고객번호가  A 인 건처럼 한 고객번호당 상품번호가 여러개 존재하는 경우를 찾고 싶은데요.
 

아무리 생각해봐도 잘 모르겠네요....ㅠㅠ..너무...질문만 텅하고 던지는것 같아 죄송합니다만 답변좀 부탁드릴게요 ㅠ

 

 

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

with t as (
select 'A' cust, '123' prod, 1 seq from dual union all
select 'A', '123', 2 from dual union all
select 'A', '123', 3 from dual union all
select 'A', '122', 1 from dual union all
select 'A', '122', 2 from dual union all
select 'B', '122', 1 from dual union all
select 'B', '122', 2 from dual
)       
select cust
     , prod
  from (
         select cust
              , prod
              , count(*)over(partition by cust) cnt
           from t
          group by cust, prod
       )
 where cnt > 1

知音(sunnylee72)님이 2011-06-23 07:56에 작성한 댓글입니다.
이 댓글은 2011-06-23 09:36에 마지막으로 수정되었습니다.

WITH TEST1 AS (
    SELECT 'A' CUSTOMER, '123' PRODUCT, '1' SEQ FROM DUAL
    UNION ALL SELECT 'A' CUSTOMER, '123' PRODUCT, '2' SEQ FROM DUAL
    UNION ALL SELECT 'A' CUSTOMER, '123' PRODUCT, '3' SEQ FROM DUAL
    UNION ALL SELECT 'A' CUSTOMER, '122' PRODUCT, '1' SEQ FROM DUAL
    UNION ALL SELECT 'A' CUSTOMER, '122' PRODUCT, '2' SEQ FROM DUAL
    UNION ALL SELECT 'B' CUSTOMER, '122' PRODUCT, '1' SEQ FROM DUAL
    UNION ALL SELECT 'B' CUSTOMER, '122' PRODUCT, '2' SEQ FROM DUAL
)
SELECT CUSTOMER FROM (
      SELECT CUSTOMER, COUNT(CUSTOMER) CNT
        FROM (SELECT CUSTOMER FROM TEST1 GROUP BY CUSTOMER, PRODUCT)
    GROUP BY CUSTOMER )
WHERE CNT > 1

복권인생님이 2011-06-23 07:57에 작성한 댓글입니다.
이 댓글은 2011-06-23 07:57에 마지막으로 수정되었습니다. Edit

SELECT cust
  FROM t
 GROUP BY cust
HAVING COUNT(DISTINCT prod) > 1
;

마농(manon94)님이 2011-06-23 08:13에 작성한 댓글입니다.

select cust,count(*) cnt1,count(distinct prod) cnt2
from t
group by cust
having count(distinct prod) != 1 -- 1번안
having min(prod) != max(prod) -- 2번안

a님이 2011-06-23 09:46에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38633sql developer, toad us7ascii에서 한글깨짐 [2]
초핸섬
2011-06-23
12759
38632팩되어 있는 자료를 언팩시켜서 조회하는 방법 알려주시면 고맙겠습니다. [3]
진윤제
2011-06-23
3727
38631고수님들 도와주세요~!! [1]
조현욱
2011-06-23
3617
38630간단한것 같은데 잘 모르겠네요 도움좀 부탁드립니다. [4]
나그네
2011-06-22
4370
38629쿼리 튜닝 부탁드립니다. 아님 방도라도..ㅠㅠ
무심도
2011-06-22
5119
38628고수님들 쿼리질문입니다. [1]
쫑~~
2011-06-22
4352
38627[오라클] 전체 백업 후 복구실패 [1]
zark
2011-06-22
4362
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다