2014-04-14 2 views
1

안녕하세요 한이 어떻게 조인 문에서 중복 레코드를 제거 할 수 있습니다.조인 쿼리에서 중복 값을 제거하는 방법

SELECT std_info.Reg_no, std_info.std_name, tut_fee.fee_month, class.class_name 
FROM std_info 
    INNER JOIN tut_fee on std_info.Reg_no=tut_fee.Reg_no 
    INNER JOIN promot on std_info.Reg_no=promot.Reg_no 
    INNER JOIN class on class.class_id=promot.class_id 
WHERE std_info.Reg_no not in (SELECT Reg_no 
           FROM tut_fee 
           WHERE tut_fee.fee_month=3 
           AND tut_fee.fee_year=2014) 

그것은 결과 모두 들어

Reg_no  std_name fee_month class_name 

1. A01  name1   1   2nd 
2. A01  name1   2   2nd 
3. A02  name2   1   3rd 
4. A02  name2   2   3rd 

감사를드립니다.

+7

중복 된 항목이 없습니다. – StephaneM

+0

Name1과 Name2가 두 번 반복되며 A01처럼 보이기를 원합니다. name1 두 번째 A02 name2 세 번째로 재생합니다. –

답변

0

먼저 나는 데이터베이스에 이름 Fee_temp을 임시 테이블을 생성하고 쿼리에 의해 주어진 레코드를 삽입. 그리고 Row_Number 함수를 사용하여 파티션을 만듭니다. 그리고 둘 이상의 나열된 모든 레코드를 삭제하십시오. 아래처럼주세요.

insert into Fee_temp SELECT std_info.Reg_no,std_info.std_name,tut_fee.fee_month,class.class_name FROM 
std_info Left JOIN tut_fee on std_info.Reg_no=tut_fee.Reg_no Left JOIN promot on std_info.Reg_no=promot.Reg_no Left JOIN 
class on class.class_id=promot.class_id 
WHERE std_info.Reg_no not in (select Reg_no FROM tut_fee where tut_fee.fee_month=3 and tut_fee.fee_year=2014) 
SELECT * from Fee_temp 
    With A as 
(
select Fee_temp.Reg_no,Fee_temp.std_name,Fee_temp.fee_month,Fee_temp.class_name,ROW_NUMBER() 
OVER (Partition by Reg_no ORDER BY Fee_temp.std_name) As Number from Fee_temp 
) 
DELETE FROM A WHERE Number>1 
SELECT * FROM Fee_temp 
0

칼럼에서 온 dublicat "tut_fee.fee_month는"

관련 문제