2014-01-29 1 views
0

먼저 SQL을 처음 사용하고 매일 많은 것을 배우게됩니다. 그 말로는, 여기에 내 문제가있다. 이미 생성 된 뷰가 있습니다 (장비에 생성 된 수익이 표시됨). 그러나 추가 된 테이블이 하나 더 필요합니다 (장비 대비 비용). 내부 조인 테이블을 추가하려고하면 중복 뷰가 생성됩니다. 그때 또 다른 조인을 추가하려고SQL 테이블을 결합하여 수익과 비용을 비교하십시오.

SELECT 
<removed, there are about 25 of them> 
FROM 
dbo.LRCON WITH (nolock) 
INNER JOIN dbo.LRCONVIN WITH (nolock) ON dbo.LRCONVIN.ConId = dbo.LRCON.ConId 
INNER JOIN dbo.LRBILCON WITH (nolock) ON dbo.LRBILCON.ConId = dbo.LRCONVIN.ConId AND dbo.LRBILCON.UntId = dbo.LRCONVIN.UntId 
INNER JOIN dbo.LRBILITM WITH (nolock) ON dbo.LRBILITM.ParentItmId = dbo.LRBILCON.ItmId 
INNER JOIN dbo.LRBIL WITH (nolock) ON dbo.LRBIL.BilId = dbo.LRBILCON.BilId 
INNER JOIN dbo.LRCONTYP WITH (nolock) ON dbo.LRCONTYP.ConTypId = dbo.LRCON.ConTypId 
INNER JOIN dbo.COLOOKUP AS C1 WITH (nolock) ON C1.Id = dbo.LRBILITM.ItmTyp 
INNER JOIN dbo.COLOOKUP AS C2 WITH (nolock) ON C2.Id = dbo.LRCONTYP.ConTyp 
INNER JOIN dbo.VHVIN WITH (nolock) ON dbo.VHVIN.UntId = dbo.LRCONVIN.UntId 
WHERE  
(dbo.LRBIL.Status = 647) AND (dbo.LRBILITM.ItmTyp <> 274) 

: 선택 문을

INNER JOIN dbo.SVSLS WITH (nolock) on dbo.SVSLS.UntId = dbo.LRCONVIN.UntId 

: 여기에 (그것의 수익 부분에 대한) 내 원래이다

ROUND(dbo.SVSLS.AmtSubtotal + dbo.SVSLS.AmtSupplies + dbo.SVSLS.AmtDiagnostic + dbo.SVSLS.AmtTax1 + dbo.SVSLS.AmtTax2, 2) AS SvcAmtSale 

은 .. 하지만 각 원본 테이블의 각 행에 각 비용의 세부 사항을 추가하기 때문에 많은 행이 중복됩니다.

원래 테이블 : 내가 추가 한 후 https://dl.dropboxusercontent.com/u/81145403/orginal_table.jpg

나의 새로운 선택/가입 : 나는이 문제를 해결하려면 어떻게 https://dl.dropboxusercontent.com/u/81145403/failed_table.jpg

를? 하루가 끝나면 내 수익과 장비 비용을 날짜 범위에 걸쳐 비교하고 싶습니다. 나는 정말로 경비의 개별적인 세부 사항을 신경 쓰지 않는다. 단지 총액이 나에게 좋다.

+0

:와 SvcSaleAmt으로 ROUND()를 교체 날짜 범위. 그것은 내가 심지어 조인을 시도해야한다고 생각하게하지만 다른 것을해야합니까? – user3250212

답변

1

관심있는 수익은 SvcSaleAmt입니까? 여러 항목 행이 같은 항목의 항목을 분리합니까? 개별 세부 정보가 반드시 필요하지 않으면 항목을 함께 그룹화 할 수 있습니다. 이를 위해, 당신은 당신의 SELECT 목록에서 SlsId 제거해야합니다, 당신이 당신의 SELECT 문에있는 모든 열을 사용하여

GROUP BY CusId, CusName, BillId, ConId, Prd, ConTypId, ....., AmtCos, AmtGpm

추가 할 수 있습니다. 위에서 언급이 더보기 나는 내가 이상을 비교할 제외하고는 서로 상관없는 참여하기 위해 노력하고있어 테이블에 대해 생각

ROUND(SUM(dbo.SVSLS.AmtSubtotal + dbo.SVSLS.AmtSupplies + dbo.SVSLS.AmtDiagnostic + dbo.SVSLS.AmtTax1 + dbo.SVSLS.AmtTax2), 2) AS SvcSaleAmt

관련 문제