Hola que tal tengo el siguiente procedimiento de almacenamiento:
CREATE OR REPLACE FUNCTION TopSales(customerCode integer)
RETURNS SETOF integer AS $body$
DECLARE zCount Integer;
DECLARE zProdCode Integer;
BEGIN
SELECT count(*) INTO zCount FROM SalesHeaders WHERE custCode=customerCode;
IF zCount=0 THEN
zProdCode=-1;
ELSE
SELECT ite.prodCode INTO zProdCode FROM Customers cus, SalesHeaders hea, SalesItems ite
WHERE hea.SalesCode=ite.SalesCode AND hea.custCode=customerCode
GROUP BY cus.custCode, cus.custName, ite.prodCode
HAVING max(ite.quantity) >= ALL (SELECT max(ite2.quantity)
FROM SalesHeaders hea2, SalesItems ite2
WHERE hea2.SalesCode=ite2.SalesCode AND hea2.custCode=customerCode
GROUP BY hea2.salesCode);
END IF;
RETURN NEXT zProdCode;
END
$body$ LANGUAGE plpgsql;
Que deberia devolver los productos mas vendidos para cada cliente, el problema es que del cliente 1 se que existen 2 productos mas vendidos, prodCode 1 y 5 pero en la salida de la consulta:
SELECT *,TopSales(custCode) from Customers;
Solo me aparece el prodCode 5.
Podria alguien hecharme una mano?
Un saludo y gracias por anticipado.