Try adding group by for each field you have in order of control.
I'm not sure how that will work at all; I've never used the concat functionality in oracle, and I've avoided it in MySQL in favor of object creation, let alone over many different tables joined in. I can't see the number of joins actually being relevant though, you should be able to group it on whatever you want from the selections.
Edit:
Use the original names, not the aliased names in a group by clause.