Большое вам спасибо! Работает. Не могли бы вы, пожалуйста пояснить зачем там SUM()?
IF я так полагаю, что если значение в столбце не совпало, мы ставим 0.
Кстати, а что делать если количество price заранее не известно? Или там вообще могут быть любые значение?
1) SUM там так как фактически мы сворачиваем разреженную таблицу, уберите GROUP_BY тогда будет понятнее, что именно происходит и для чего нужен sum
2) Тогда вам придется сначала получить все уникальные price_id и затем сгенерировать на каждый из них отдельный SUM(IF ....)