Условное агрегирование работает в любой базе данных:
SELECT qt.origin, qt.destination,
MAX(CASE WHEN p.provider_name = 'provider name 1' then pr.price END) as price_1,
MAX(CASE WHEN p.provider_name = 'provider name 2' then pr.price END) as price_2,
MAX(CASE WHEN p.provider_name = 'provider name 3' then pr.price END) as price_3
FROM Price pr JOIN
Quote q
ON q.id_quote = pr.id_quote JOIN
Provider p
ON p.id_provider = pr.id_provider
GROUP BY q.origin, q.destination;
Для этого также требуется фиксированный список поставщиков.Если вы не знаете провайдеров, которые вам нужны в столбцах, у вас есть проблема, которая требует динамического SQL - а простой select
не может выполнить эту работу.