Prezados, estou tentando criar uma function no postgresql utilizando, inclusive, campos calculados. Logo abaixo tem os campos importantes comentados (estão comentados pq sem eles eu consigo criar a function). Mas preciso desses campos. Como faço para incluí-los, após "descomentar"?
CREATE OR REPLACE FUNCTION bi.calculate_media_faturamento(IN parcompetenciainicial numeric, IN parcompetenciafinal numeric, IN parcnpj character varying, IN parsimples character varying, IN parreceita text, IN partributacao text)
RETURNS TABLE(inscricaoid integer, numinscricao numeric, cnpj character varying, razaosocial character varying, competencia numeric, vlrbasecalculonfse numeric, vlrissnfse numeric, vlrissarrecadacao numeric, situacaosimples character varying, tp_receita text, tp_tributacao text) AS
$BODY$
BEGIN
RETURN QUERY
SELECT
tr.inscricaoid ,
tr.numinscricao ,
tr.cnpj ,
tr.razaosocial ,
tr.competencia ,
tr.vlrbasecalculonfse ,
tr.vlrissnfse ,
tr.vlrissarrecadacao ,
tr.situacaosimples R,
tr.tp_receita ,
tr.tp_tributacao
--(SELECT COALESCE(SUM(a.vlrbasecalculonfse) / 12, 0)
-- FROM tr_relatorio_comparativo_iss a
-- WHERE CAST(a.competencia || '01' AS DATE) >= (CAST(parCompetenciaFinal || '01' AS DATE) - INTERVAL '12 month')
-- AND CAST(a.competencia || '01' AS DATE) <= (CAST(parCompetenciaFinal || '01' AS DATE) - INTERVAL '1 month')
-- AND (a.inscricaoid = tr.inscricaoid)
-- AND (a.cnpj = parCNPJ OR parCNPJ = 'Todos')) AS mediafaturamento,
-- (SELECT COALESCE(SUM(a.vlrissarrecadacao) / 12, 0)
-- FROM tr_relatorio_comparativo_iss a
-- WHERE CAST(a.competencia || '01' AS DATE) >= (CAST(parCompetenciaFinal || '01' AS DATE) - INTERVAL '12 month')
-- AND CAST(a.competencia || '01' AS DATE) <= (CAST(parCompetenciaFinal || '01' AS DATE) - INTERVAL '1 month')
-- AND (a.inscricaoid = tr.inscricaoid)
-- AND (a.cnpj = parCNPJ OR parCNPJ = 'Todos')) AS mediaarrecadacao,
--CASE
-- WHEN tr.vlrissarrecadacao = 0 THEN 'EM ABERTO'
--WHEN tr.vlrissnfse = tr.vlrissarrecadacao THEN 'QUITADO'
--WHEN tr.vlrissnfse < tr.vlrissarrecadacao THEN 'PAGO A MENOR'
-- END AS pagamento
FROM tr_relatorio_comparativo_iss tr
WHERE tr.competencia BETWEEN parCompetenciaInicial AND parCompetenciaFinal
AND (tr.cnpj = parCNPJ OR parCNPJ = 'Todos')
AND (tr.situacaosimples = parSimples OR parSimples = 'Todos')
AND (tr.tp_receita = parReceita OR parReceita = 'Todos')
AND (tr.tp_tributacao = parTributacao OR parTributacao = 'Todos')
;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;