Den Union benötige ich dann, wenn ich die Werte zeilenweise verarbeiten will.
Von den Zeiten der Pseudoarrays (sprich Denormalisierung) sind wir doch eigentlich schon weg;-).

Allerdings könnte man nun deinen SQL mit dem hier schon mal veröffentlichten

select ...
cross join lateral (
) as tabelle(...)

ergänzen um doch wieder Zeilenzu bekommen.