Операторы набора (UNION / UNION ALL) должны сделать свое дело.Не может видеть структуру данных полностью, но ниже должно работать:
SELECT d, p, name, val1 FROM table
UNION ALL
select d, p , name, val2 FROM table;
Используйте UNION вместо UNION ALL, если вам не нужны дублированные результаты в случае val1 = val2.
SELECT d, p, name, val1 FROM table
UNION
select d, p , name, val2 FROM table;
Однако, поскольку это будет один столбец для val1 и val2, он будет иметь имя val1, как это происходит из первого оператора select, поэтому результат будет таким:
d p name val1
'val' 25 'john' 450
'val' 25 'john' 90