Вы можете попробовать использовать функцию НЕСТ.
SELECT v.*
FROM T
CROSS JOIN UNNEST(ARRAY[
ROW('A', A),
ROW('B', B),
ROW('C', C),
ROW('D', D),
ROW('E', E)
]) AS v(Reason, Percentage);
другой способ - использовать UNION ALL
SELECT 'A' Reason , A Percentage FROM T
UNION ALL
SELECT 'B' Reason , B Percentage FROM T
UNION ALL
SELECT 'C' Reason , C Percentage FROM T
//....
AFAIK
unnest
поддерживает несколько массивов, так что вы можете сделатьunnest(array['A', 'B', ...], array[A, B, ...])
.