누구나이 SQL 쿼리가이 결과를 반환하는 이유를 말해 줄 수 있습니까?이 SQL 쿼리가이 결과를 반환하는 이유는 무엇입니까?
SELECT
M.MatterNumber_Id, M.MatterNumber, M.MatterName,
ISNULL(MP.Role_Cd, 'No Primary') AS PrimaryRole,
ISNULL(E.Name, 'No Primary') AS PrimaryName,
ISNULL(C.CommNumber, '[email protected];[email protected]') AS Email
FROM
Matter M
LEFT OUTER JOIN
MatterPlayer MP ON M.MatterNumber_Id = MP.MatterNumber_Id AND
MP.Role_Cd IN ('Primary Lawyer', 'Primary Staff Member') AND
MP.EndDate IS NULL
LEFT OUTER JOIN
Entity E on MP.Entity_EID = E.Entity_EID
LEFT OUTER JOIN Communication C on MP.Entity_EID = C.Entity_EID AND
C.CommunicationType_Cd = 'Email'
LEFT OUTER JOIN
MatterExposure ME on M.MatterNumber_Id = ME.MatterNumber_Id AND
ME.AssessedDate > '7/10/2014' AND
ME.Currency_CD IS NOT NULL
WHERE
M.MatterStatus_Cd = 'Active' AND
ME.AssessedDate IS NULL AND
M.Matter_Cd in
(SELECT
rpl.Type_CD
FROM
RuleProfile_Tabs rpt
INNER JOIN
RuleProfile_LookupCode rpl ON rpt.RuleProfile_ID = rpl.RuleProfile_ID
WHERE
tab_id = 1034 AND Caption LIKE 'Reportable Matter%')
ORDER BY
Email, M.MatterName
하지만 결과가 표시 될 때 반환 된 레코드 중 하나를 선택했는데 반환되지 않아야합니다. 결과
하나는 반환 베일리, 리처드
를 DB에 Currency_CD가 null이기 때문에 나는 그것을 반환되지 말았어야 테이블의 값을 확인하고 SQL에 null가 아닌 currency_cd 상태. 또한 평가 날짜 2014년 7월 10일
표 값 이후 : 절을 필터링에 사용되는
MatterStatus_CD:
Active
AssessedDate:
7/24/2014
Currency_CD:
NULL
EndDate:
NULL
'Currency_CD IS NOT NULL'조건은 '왼쪽 결합'을위한'on' 절에 있습니다. 따라서 필터가 원하는대로 작동하지 않고 조인 조건으로 작동합니다. –
'ME.Currency_CD IS NOT NULL'IS NOT NULL 부분은 where 절로 이동해야합니다. –