세개의 컬럼값이 같은 데이터 추출 문의 0 2 972

by 오라클왕따 [Oracle 기초] [2014.04.16 11:01:21]


안녕하세요~ 오늘은 날씨가 많이 흐리네요~

다름이 아니라 아래와 같이 테이블에 값이 있는데요... B, C, D에 같은 데이터만 추출을 하려고 합니다.

SELECT * FROM 테이블 WHERE B = B AND C = C AND D = D; 라고 하면 추출이 될 줄 알았는데

그렇게 나오지는 않더라고요.... B, C, D에 같은 데이터만 추출을 하려면 어떻게 해야하는지 문의 드립니다...
A B C D E
가게1 사과 바나나 20140416
가게2 사과 바나나 20140417
가게3 사과 바나나 20140418
가게4 사과 바나나 20140419
가게5 포도 참외 20140420
가게6 사과 바나나 20140421
가게7 수박 멜론 토마토 20140422
by 농부지기 [2014.04.16 11:34:50]
OVER () 분석 함수가 아주 똑똑한 놈이네요.
잘 활용해보세요.
WITH T (A, B,C,D,E) AS
  ( SELECT '가게1', '사과', '배' , '바나나', '20140416' FROM DUAL UNION ALL 
   SELECT '가게2', '사과', '배' , '바나나', '20140417' FROM DUAL UNION ALL 
   SELECT '가게3', '사과', '배' , '바나나', '20140418' FROM DUAL UNION ALL 
   SELECT '가게4', '사과', '배' , '바나나', '20140419' FROM DUAL UNION ALL 
   SELECT '가게5', '포도', '귤' , '참외 ', '20140420' FROM DUAL UNION ALL 
   SELECT '가게6', '사과', '배' , '바나나', '20140421' FROM DUAL UNION ALL 
   SELECT '가게7', '수박', '멜론', '토마토', '20140422' FROM DUAL 
  )
SELECT *
 FROM (
    SELECT T.*
       , COUNT(*) OVER(PARTITION BY B,C,D) AS CNT
     FROM T
    ) T
 WHERE T.CNT > 1;

by 오라클왕따 [2014.04.16 12:24:30]
앗~ 감사합니다~ 좋은 정보 잘 활용할게요^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입