2014-11-16 2 views
0

이 쿼리가 올바르게 실행되었습니다. 그러나 출력이 중복 된 텍스트처럼 보입니다 (아래 이미지 참조). 코드에 문제가 있습니까? 그렇다면, 어떻게이 쿼리는 더 반복 행이 실행MS SQL 조인 기능 이상

SELECT   sv.FirstName + ' ' + sv.LastName 'SalesPersonName', 
       st.[Group] 'TerritoryGroup',st.Name 'TerritoryName', 
       StateProvinceName 'ShipState', 
       YEAR(OrderDate) 'Order Year',MONTH(OrderDate) 'Order Month', 
       (soh.TotalDue) Total 
FROM    Person.StateProvince ps 
LEFT OUTER JOIN   Sales.SalesOrderHeader soh 
ON    ps.TerritoryID=soh.TerritoryID 
LEFT OUTER JOIN   Sales.SalesTerritory st 
ON    soh.TerritoryID = st.TerritoryID 
LEFT OUTER JOIN   Sales.vSalesPerson sv 
ON    soh.SalesPersonID = sv.BusinessEntityID 

enter image description here

+1

당신이'INNER'를 사용하는 효과를 확인하는 대신'LEFT OUTER나요에게 수정 않는다 조인. 도움이되지 않는 경우 자세한 내용을 입력하면 도움을 드릴 것입니다. – Abecee

+0

감사합니다. Abecee,하지만 INNER JOIN과 JOIN은 결과를 변경하지 않았습니다. 다른 세부 사항은 무엇입니까? – Eda

+0

테이블의 관련 부분 정의, 샘플 데이터 및이 데이터의 예상 결과 ... 그러나 네 개의 테이블에서 모든 열을 선택하면 - 여전히 중복 행처럼 보입니까? 그렇지 않다면'DISTINCT'를 쿼리에 추가하면 중복을 제거 할 수 있습니다. – Abecee

답변

1

이 이상

SELECT  sv.FirstName+' '+sv.LastName 'SalesPersonName',st.[Group]  'TerritoryGroup',st.Name 'TerritoryName', ps.Name 'ShipState', 
    YEAR(OrderDate) 'OrderYear',MONTH(OrderDate) 'OrderMonth',soh.TotalDue 
FROM  Person.Address pa 
INNER JOIN Person.StateProvince ps 
ON  pa.StateProvinceID = ps.StateProvinceID 
INNER JOIN Sales.SalesOrderHeader soh 
ON  pa.AddressID = soh.BillToAddressID 
AND  pa.AddressID = soh.ShipToAddressID 
INNER JOIN Sales.SalesTerritory st 
ON  ps.TerritoryID = st.TerritoryID 
AND  ps.TerritoryID = st.TerritoryID 
AND  soh.TerritoryID = st.TerritoryID 
AND  soh.TerritoryID = st.TerritoryID 
CROSS JOIN Sales.vSalesPerson sv 
+0

이것은 완전히 다른 쿼리이며 원래 질문에 대한 대답으로 간주 할 수 없습니다. –

+0

감사합니다. 당신 말이 맞을 수도 있습니다. 그러나 이것은 각 지정된 테이블에서 필요한 모든 정보를 제공합니다. 따라서 이것이 내 용도에 맞는 쿼리입니다. – Eda