Comparing INT and NVARCHAR
I solved it myself.
In case someone runs into a similar problem:
[dbo].[MemoCount] also has an ID Column.
so i changed

AND ([Reference] COLLATE SQL_Latin1_General_CP1_CI_AS = [ID]))


to:

AND ([Reference]  = [Foobar].[dbo].[Expense].[ID])) AS [MemoCount]


Apparently SQL took the column [dbo].[MemoUnion].[ID] to compare it with [Reference].
That problem was of course not solvable for you guys because I never posted the Columns of [dbo].[MemoUnion] in the first place.
Thanks for all the suggestions nonetheless!