2016-11-07 7 views
3

좋은 하루, 두 개의 다른 행에서 중복 데이터를 제거하려는이 쿼리를 사용하고 있습니다. 예를 들어 여기에서이 레코드 쿼리 결과를 얻을 수 있습니다. 소위는 같은 날짜에 출시 된SQL에서 두 테이블 조인을 사용하여 select 문에서 중복 제거하는 방법

SELECT DISTINCT 
T9.SlpName, T1.CardName [Customer Name],T1.DocNum [SO No.], 
T1.DocDate [SO Date],T1.DocTotal [SO Total], T3.DocNum [Delivery Doc Num], 
T5.DocNum [TRA No], T5.DocDate [TRA Date],T5.DocTotal [TRA Total], 
T5.GrosProfit [Gross Profit] 
FROM RDR1 T0 INNER JOIN ORDR T1 ON T0.DocEntry = T1.DocEntry 
    left outer join DLN1 T2 on T2.BaseEntry = T0.DocEntry 
    left outer join ODLN T3 on T2.DocEntry = T3.DocEntry 
    left Outer join INV1 T4 on T4.BaseEntry = T3.DocEntry and T4.BaseLine = T2.Linenum and T4.BaseType = 15 
        OR (T4.Basetype=17 and T4.BaseEntry=T0.DocEntry and T4.BaseLine=T0.LineNum) 
      left outer join OINV T5 on T5.DocEntry = T4.DocEntry 
      left outer join OSLP T9 on T9.SlpCode = T1.SlpCode 
      WHERE T1.DocDate BETWEEN '10.01.16' AND '10.27.16' AND T1.CardCode='C-ACQUA TECH' 
Group by T9.SlpName, T1.[CardName], T1.[DocNum], T1.[DocDate], T1.DocTotal, 
T3.DocNum, T5.DocNum, T5.DocDate, T5.DocTotal,T5.GrosProfit 
ORDER BY T9.SlpName,T1.CardName 


Customer | SO-Date | SO-Number | SO-Amount | INV-Date | INV-Amount 
B1  10-07-16 000001  80,000.50 11-26  54,000.00 
B1  10-07-16 000001  80,000.50 11-29  24,000.00 

하지만 다른 인보이스 날짜 난 크리스탈 보고서를 수행 할 때 이렇게 있습니다 .. SO 금액이 단지 중복에도 불구하고 요약 된 있습니다. 행이 조인의 다른 측면에 여러 조인 파트너를 가지고

Customer | SO-Date | SO-Number | SO-Amount | INV-Date | INV-Amount 
B1  10-07-16 000001  80,000.50 11-26-16 54,000.00 
null   null  null  null  11-29-16 24,000.00 

답변

0

경우, 당신은 항상 해당 행을 중복됩니다 : (i가 중복 값을 합산 크리스탈 보고서에서 방법을 찾을 수 없습니다 원인) 내가 원하는 것입니다. SO-AmountINV-Amount을 집계하기 위해 두 가지 별도의 쿼리가 필요합니다.

--- 편집 ---

이 간단한 예제를 생각해 봅시다 : 우리는 세 개의 테이블이있다. 회사 부서를 저장하는 부서, 부서의 연간 매출을 저장하는 부서 및 부서의 월간 비용을 저장하는 부서. 2

DepartmentId | Year | Revenue 
5234   | 2015 | 2,000,000 
5234   | 2014 | 1,500,000 

표 3

DepartmentId | Year | Month | Cost 
5234   | 2015 | Jan | 120,000 
5234   | 2015 | Feb | 150,000 
5234   | 2014 | Jan | 80,000 

아웃 작업이 전체 비용뿐만 아니라 부서 5234의 전반적인 수익을 정리해 지금

표 1

DepartmentId | DepartmentName   | NumberEmployees 
5234   | "Software Development" | 20 
3465   | "Sales"     | 120 

표 . 우리는 표 1과 표 2에 가입하면

우리가 얻을 :

DepartmentId | DepartmentName   | NumberEmployees| Year | Revenue 
5234   | "Software Development" | 20    | 2015 | 2,000,000 
5234   | "Software Development" | 20    | 2014 | 1,500,000 

우리는 전체 수익을 계산할 수있는이 테이블과 함께.

우리가 표 1에 가입하면

3 우리가 얻을 :

DepartmentId | DepartmentName   | NumberEmployees | Year | Month | Cost 
5234   | "Software Development" | 20    | 2015 | Jan | 120,000 
5234   | "Software Development" | 20    | 2015 | Feb | 150,000 
5234   | "Software Development" | 20    | 2014 | Jan | 80,000 

당신이 전체 비용을 계산할 수 있습니다이 테이블과 함께. 너무 2015에 대한 항목이 비용 때문에

DepartmentId | DepartmentName   | NumberEmployees| Year | Revenue | Month | Cost 
5234   | "Software Development" | 20    | 2015 | 2,000,000 | Jan | 120,000 
5234   | "Software Development" | 20    | 2015 | 2,000,000 | Feb | 150,000 
5234   | "Software Development" | 20    | 2014 | 1,500,000 | Jan | 80,000 

는 2015 년 매출이 중복 볼 수 있듯이 (월을 : 당신이 얻을 때문에, 3 테이블에 합류 불구하고 싶지 않아 무엇

2 월). 이 표를 사용하여 전체 수익과 비용을 계산하면 결국 잘못된 값을 갖게됩니다.

그래서 결론을 내리고 문제와 관련이 있습니다. 집계 계산에는 두 가지 별도의 쿼리를 사용해야합니다.

+0

정교하게 제발 .. – aintno12u

+0

이 편집이 도움이됩니까? – Erik