If you want your distinct counts to each show up on a different row, you'll either need to do the union like you have, which I don't recommend because it's slow
or do a join like I have to a dummy table
or, if you are on 11g you can try to use UNPIVOT.
none of them are complex. but the union method is the least efficient.