You have to modify the filtering in the CALCULATETABLE then. Right now we are just filtering for amount > 0 and that is why the row > 0 is taken into account. You want SUM(amount) > 0 as we do working out the second listing.
For this to work well, all IDs with payment in 'Financials' would need to be in 'Fees' (either with or without payment). That seems not to be the case. The missing ones will not be removed by the EXCEPT.
A safer, less restrictive option is to go with INTERSECT:
Thank you so much for your quick answer. I think it works. I took a small sample and did a countif in excel with a result of 126 and i get 127 in PBI. I'll take a look again but I'm positive that the measure is correct.
1. You didn't tell me about the Date table. The dates in your Cases table include time so you won't be able to filter on that column with a Date table that does not include time. You'd have to create an additional column in Cases with only date (i.e., time 00:00:00)
2. The measures look ok but I won't be able to determine whether they are correct until I know exactly what every measure is supposed to do. What is "cases with no fees", for instance? Does that case have a fee when it has an entry in the Fees table? Or only if it's on that table but has a non-blank amount, or non-zero? And so on...
3. What kind of filtering do you ultimately want to do? With dates? with something else? That's important too.
There are many case IDs in both 'FEES' and 'Financials' that do not appear in 'Cases'. Why is this? That would be required for the approach you are using to work. Otherwise, you would have to go down the path of INTERSECT or other set functions and ignore the 'Cases' table in your measures.
If 'Cases' has all case IDs, which would seem reasonable, you'd also have to modify your code so as to include only IDs in 'FEES' that have 'amount' greater than zero. I haven't tested it: