私たちは実際にあなたのデータを知らないので、これは暗闇の中のショットですが、既存のクエリが気に入った場合は、次のように where 句を使用して単純に 2 回使用できる場合があります。
SELECT -- Common stuff? ISNULL(Sales.ActivityId, Other.ActivityId), ISNULL(Sales.ScheduledStart, Other.ScheduledStart), ISNULL(Sales.OwnerIdName, Other.OwnerIdName), ISNULL(Sales.AccountIdName, Other.AccountIdName), ISNULL(Sales.new_ContactPersonName, Other.new_ContactPersonName), ISNULL(Sales.[Subject], Other.[Subject]), ISNULL(Sales.new_ColderNotes, Other.new_ColderNotes) -- Sales stuff? , Sales.AccountId, Sales.ContactId, Sales.SystemUserId, Sales.OptionalOwner, Sales.OptionalContact, Sales.OptionalAccount, Sales.PartyId, Sales.ParticipationTypeMask, Sales.RequiredContact, Sales.RequiredAccount, Sales.RequiredOwner, Sales.new_BusinessUnit -- Other Stuff? , Other.AccountId, Other.ContactId, Other.SystemUserId, Other.OptionalOwner, Other.OptionalContact, Other.OptionalAccount, Other.PartyId, Other.ParticipationTypeMask, Other.RequiredContact, Other.RequiredAccount, Other.RequiredOwner, Other.new_BusinessUnit FROM ( SELECT DISTINCT Appointment.ActivityId, Appointment.ScheduledStart, Appointment.OwnerIdName, Contact.AccountIdName, Appointment.new_ContactPersonName, Appointment.Subject, Appointment.new_ColderNotes, Account.AccountId, Contact_1.ContactId, SystemUser.SystemUserId, SystemUser.FullName AS OptionalOwner, Contact_1.FullName AS OptionalContact, Account.Name AS OptionalAccount, ActivityParty.PartyId, ActivityParty.ParticipationTypeMask, Contact_1.FullName AS RequiredContact, Account.Name AS RequiredAccount, SystemUser.FullName AS RequiredOwner, Account.new_BusinessUnit FROM Contact AS Contact_1 RIGHT OUTER JOIN Account RIGHT OUTER JOIN SystemUser RIGHT OUTER JOIN Appointment INNER JOIN ActivityParty ON Appointment.ActivityId = ActivityParty.ActivityId ON SystemUser.SystemUserId = ActivityParty.PartyId ON Account.AccountId = ActivityParty.PartyId ON Contact_1.ContactId = ActivityParty.PartyId LEFT OUTER JOIN Contact ON Appointment.new_ContactPerson = Contact.ContactId -- Limit this part to Sales? WHERE ParticipationTypeMask BETWEEN 1 AND 3 ) as Sales FULL OUTER JOIN ( SELECT DISTINCT Appointment.ActivityId, Appointment.ScheduledStart, Appointment.OwnerIdName, Contact.AccountIdName, Appointment.new_ContactPersonName, Appointment.Subject, Appointment.new_ColderNotes, Account.AccountId, Contact_1.ContactId, SystemUser.SystemUserId, SystemUser.FullName AS OptionalOwner, Contact_1.FullName AS OptionalContact, Account.Name AS OptionalAccount, ActivityParty.PartyId, ActivityParty.ParticipationTypeMask, Contact_1.FullName AS RequiredContact, Account.Name AS RequiredAccount, SystemUser.FullName AS RequiredOwner, Account.new_BusinessUnit FROM Contact AS Contact_1 RIGHT OUTER JOIN Account RIGHT OUTER JOIN SystemUser RIGHT OUTER JOIN Appointment INNER JOIN ActivityParty ON Appointment.ActivityId = ActivityParty.ActivityId ON SystemUser.SystemUserId = ActivityParty.PartyId ON Account.AccountId = ActivityParty.PartyId ON Contact_1.ContactId = ActivityParty.PartyId LEFT OUTER JOIN Contact ON Appointment.new_ContactPerson = Contact.ContactId -- Limit this part to Other? WHERE ParticipationTypeMask BETWEEN 4 AND 6 ) AS Other ON Sales.ActivityId = Other.ActivityId -- More cols for join?
プレ>