I need some help to solve a problem with my PostgreSQL 9.1 function:
CREATE OR REPLACE FUNCTION COMMISSION_MARGIN(Aiid NUMERIC) RETURNS NUMERIC AS $$
DECLARE
COMISSAO NUMERIC;
TOTAL_SEM_IMPOSTO NUMERIC;
BEGIN
COMISSAO='"SELECT SUM(ILA.QUANTITY) FROM INVOICE_LINE_AGENT AS ILA
INNER JOIN ACCOUNT_INVOICE_LINE AS AIL ON ILA.INVOICE_LINE_ID = AIL.ID
INNER JOIN ACCOUNT_INVOICE AS AI ON AI.ID = AIL.INVOICE_ID
WHERE AI.ID = Aiid GROUP BY AI.ID"';
TOTAL_SEM_IMPOSTO='"SELECT SUM(AIL.PRICE_SUBTOTAL) FROM INVOICE_LINE_AGENT AS ILA
INNER JOIN ACCOUNT_INVOICE_LINE AS AIL ON ILA.INVOICE_LINE_ID = AIL.ID
INNER JOIN ACCOUNT_INVOICE AS AI ON AI.ID = AIL.INVOICE_ID
WHERE AI.ID = Aiid GROUP BY AI.ID"';
RETURN ((COMISSAO/TOTAL_SEM_IMPOSTO)*100);
END;
$$ LANGUAGE plpgsql;
Function call:
SELECT
COMMISSION_MARGIN(AI.ID) AS "Margin (%)"
FROM
ACCOUNT_INVOICE AS AI
INNER JOIN OTHER_TABLE AS OT ON ......
But I receive this message:
ERROR: column "SELECT SUM(ILA.QUANTITY) FROM INVOICE_LINE_AGENT AS ILA
" doesn't exists
CONTEXT: PL/pgSQL function "commission_margin" line 6 at attribution