CREATE PROCEDURE procedure() BEGIN
DECLARE tmp DECIMAL(8,2) ;
SELECT cip.modifier * cip.price * COALESCE(CAST(cip.quantity AS SIGNED), 1) INTO tmp FROM customerInvoicePosition cip...
SELECT SUM(tmp * (if(cip.type=0,1,0))) FROM customerInvoicePosition cip...
SELECT SUM(tmp * (if(cip.type=1,1,0))) FROM customerInvoicePosition cip...
SELECT SUM(tmp * (if(cip.type=2,1,0))) FROM customerInvoicePosition cip...
SELECT SUM(tmp * (if(cip.type=3,1,0))) FROM customerInvoicePosition cip...
END;
Ошибка: Результат состоит из более чем одной строкиSELECT INTO localVariable более один ряд
ОК, я понимаю, сообщение об ошибке, но есть какое-то решение для хранения более одной строки в переменном/списке?
Нет, используйте (временную) таблицу. – fancyPants
Нравится это: СОЗДАТЬ ВРЕМЕННЫЙ ТАБЛИЦ, ЕСЛИ НЕ СУЩЕСТВУЕТ tmp AS (SELECT cip.modifier * cip.price * COALESCE (CAST (cip.quantity AS SIGNED), 1) FROM customerInvoicePosition cip ...) –