문제

다음과 같은 작업을 수행하는 TSQL 쿼리가 있습니다.

SELECT SUM(s.Amount) as TotalSales, p.ProductName
FROM SALES s 
INNER JOIN Product p ON s.ProductID = p.ID
GROUP BY p.ProductName

결과 출력은입니다

TotalSales  Product
-----------------------
123.45      Apples
234.56      Oranges
345.67      Grapes

내가하고 싶은 것은 결과의 모든 제품, 심지어 판매가없는 제품을 얻는 것입니다. 나는 제품 테이블에서 왼쪽 결합을 시도했지만 단지 일을 혼란스럽게합니다.

그래서 나는 내 출력이 이와 같은 것이되기를 바랍니다.

TotalSales  Product
-----------------------
123.45      Apples
234.56      Oranges
345.67      Grapes
0.0         Lemons
0.0         Grapefruit

이 작업을 수행하는 방법이 있습니까?

도움이 되었습니까?

해결책

SELECT SUM(ISNULL(s.Amount,0)) as TotalSales, p.ProductName
FROM SALES s 
RIGHT JOIN Product p ON s.ProductID = p.ID
GROUP BY p.ProductName

다른 팁

왼쪽 조인 (더 읽기 성) :

SELECT SUM(ISNULL(s.Amount,0)) as TotalSales, p.ProductName
FROM Product p 
LEFT JOIN SALES s ON p.ProductID = s.ID
GROUP BY p.ProductName
SELECT COALESCE(SUM(s.Amount), 0) as TotalSales, p.ProductName
FROM Product p
LEFT JOIN SALES s ON s.ProductID = p.ID
GROUP BY p.ProductName
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top