Ok ... 저는 SQL에서 어떤 이유로 LEFT JOINS와 항상 투쟁합니다. SQL 쿼리 LEFT JOIN
나는 내가 기대하고있어 OpenedToday (0 값 포함) 얼마나 많은 경우의 수와, 모든 PRODUCT_CODE의 목록입니다SELECT COUNT(*) as OpenedToday, c.Product_Line, c.Product_Code
FROM SFCase as c
LEFT OUTER JOIN (SELECT DISTINCT Product_Code from SFCase) as p ON p.Product_Code = c.Product_Code
WHERE IsClosed = 'false'
AND DATEPART(YEAR, GETDATE()) = DATEPART(YEAR, CreatedDate)
AND DATEPART(MONTH, GETDATE()) = DATEPART(MONTH, CreatedDate)
AND DATEPART(DAY, GETDATE()) = DATEPART(DAY, CreatedDate)
GROUP BY c.Product_Line, c.Product_Code
간단한 쿼리를 가지고있다. 대신, 나는 오늘 열린 사례가있는 제품 코드 목록 만 얻습니다 (양수 값만).
DISTINCT Product_Code 만 실행하면 70 개의 결과가 표시됩니다. 그러나 전체 쿼리를 실행하면 오늘은 4 회로 만 얻습니다. 오늘 열리는 사건이 없는지와 함께 모든 70 개의 결과를 제로와 함께보고 싶습니다.
이 조인을 잘못 했습니까?
찰리
합니까 SFCase 만 건을 보유 오늘 오픈? 그렇지 않은 경우, 오늘 열린 사례가 어떤 것인지 어떻게 알 수 있습니까? 예 : open_date가 있습니까? 모든 제품을 보관할 별도의 테이블이 있습니까? –
당신이하고있는 것은 정반대입니다. 오른쪽 외부 조인을 사용하십시오. – chetan
Mark - 실제로, 내 실제 질의는 조금 더 있습니다 ... 나는 포럼을 위해 단순화하려고했습니다. 전체 쿼리를 표시하는 질문을 업데이트했습니다 ... 오늘 열렸는지 여부를 알기 위해 CreatedDate 필드를 확인하고 있습니다. – Charlie74