MorningI have three tables, LetterCode, LettersMailed, CycleInstance. I want to return the following results:LetterCode NumberMailed1 102 23 null4 31
Therefore, I want to return ALL the letterCodes including those that are null. However, I need to filter the count (numberMailed) using a filter in the 3rd table (CycleInstance). However, the 3rd table joins to LettersMailed. If I do an inner, left or right join on CycleInstance, I do not get all the letterCodes. For example:select LetterCode, sum(NumberMailed) From LetterCode lc left join LettersMailed lm on lc.letterCodeID = lm.LetterCodeIDleft join CycleInstance c ON C.CycleInstanceID = lm.CycleInstanceIDwhere CycleInstanceDate = '12 December 2005'GROUP By LetterCodeorder by LetterCode
I have worked around this using derived tables:SELECT T1.LetterCode , ISNULL(CONVERT(VARCHAR(15),T2.MailDate,106),'N/A')AS [Mail Date] , ISNULL(T2.NumberOfLetters,'0')AS [Number Mailed]FROM(SELECT DISTINCT L.LetterCode , L.LetterCodeIDFROM LetterCode L)AS T1LEFT JOIN(SELECT SUM(NumberMailed)AS NumberOfLetters , MailDate , LetterCodeID FROM LettersMailed LMINNER JOIN CycleInstance C ON C.CycleInstanceID = LM.CycleInstanceIDWHERE C.CycleInstanceDate = @dateGROUP BY LetterCodeID, MailDate)AS T2ON T1.LetterCodeID = T2.LetterCodeIDORDER BY T1.LetterCode
Is there any way to rewrite the query using joins??!?!Thanks in advanceHearty head pats