Учитывая это ...
FROM Appointment
INNER JOIN ActivityPartyBase ON Appointment.ActivityId = ActivityPartyBase.ActivityId
INNER JOIN AccountBase ON ActivityPartyBase.PartyId = AccountBase.AccountId
LEFT OUTER JOIN ContactBase ON ActivityPartyBase.PartyId = ContactBase.ContactId
... вы утверждаете, что это работает (?) ...
FROM Appointment
INNER JOIN ActivityPartyBase ON Appointment.ActivityId = ActivityPartyBase.ActivityId
/* INNER JOIN AccountBase ON ActivityPartyBase.PartyId = AccountBase.AccountId */
/* LEFT OUTER JOIN ContactBase ON ActivityPartyBase.PartyId = ContactBase.ContactId */
Поскольку LEFT OUTER JOIN
явно не приведет к результатам, это не будет вашей проблемой. Поскольку INNER JOIN
вызовет то, что вы видите, мы можем только сделать вывод, что условие соединения неверно.
Другими словами, ActivityPartyBase.PartyId
не равен AccountBase.AccountID
.