Bom dia

 

Minha humilde sugestão:

 

Elimine o GROUP BY da subconsulta (GROUP BY "Grupo_Conta"). Ele é
desnecessário já que o resultado final é um único valor e provavelmente
comprometerá a performance. Dependendo do SQL da view
"public"."View_Extrato_Bancos" você poderia colocar esse GROUP BY lá, ou
melhor ainda criar um índice, dessa forma agilizaria a subconsulta  (se é
que você já não tenha feito isso). 

 

Att,

 

Renato

Senda

 

De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome
de Ricardo
Enviada em: quinta-feira, 7 de novembro de 2013 12:16
Para: ( Lista ) PostgreSQL
Assunto: [pgbr-geral] Sub Consulta

 

Bom dia pessoal, preciso fazer uma sub consulta para calcular a soma do
valor_efetivado por grupo_conta.

Montei o select abaixo mas não sei se é a melhor forma. Alguém tem alguma
sugestão ?

Obrigado

 

SELECT 

  "Codigo",

  "Tipo_Conta",

  "Grupo_Conta",

  "Codigo_Conta",

  "Codigo_Banco",

  "Codigo_Parcela",

  "Quantidade_Parcelas",

  "Data_Vencimento",

  CAST( ( "Valor_Vencimento" * ( CASE "Tipo_Conta" WHEN 'Saida' THEN -1 ELSE
1 END )  ) as "d_Moeda_15_4" ) as "Valor_Vencimento",

  "Data_Efetivado",

  "Valor_Juros",

  "Valor_Multa",

  "Valor_Desconto",

  CAST( ( "Valor_Efetivado" * ( CASE "Tipo_Conta" WHEN 'Saida' THEN -1 ELSE
1 END )  ) as "d_Moeda_15_4" ) as "Valor_Efetivado",

 

  ( SELECT SUM( CAST( ( "Valor_Efetivado" * ( CASE "Tipo_Conta" WHEN 'Saida'
THEN -1 ELSE 1 END )  ) as "d_Moeda_15_4" ) )

      FROM "public"."View_Extrato_Bancos" 

     WHERE ( "Data_Vencimento" BETWEEN '01/09/2013' AND '01/11/2013' OR
"Data_Efetivado" BETWEEN '01/09/2013' AND '01/11/2013' )

       AND "Grupo_Conta" =  cod."Grupo_Conta"

  GROUP BY "Grupo_Conta" ) as "Valor_Efetivado_Grupo",

 

  "Autorizacao",

  "N_NotaFiscal",

  "N_Boleto",

  "N_Cheque",

  "Codigo_Transportadora",

  "Codigo_Fornecedor",

  "Codigo_Compra",

  "Codigo_Cliente",

  "Codigo_Movimento",

  "Codigo_Servico",

  "Data_Cadastro",

  "Ultimo_Usuario",

  "Data_Modificado",

  "_CHAVE_UNICA"

FROM 

  "public"."View_Extrato_Bancos" cod

WHERE

  "Data_Vencimento" BETWEEN '01/09/2013' AND '01/11/2013'

OR

  "Data_Efetivado" BETWEEN '01/09/2013' AND '01/11/2013'

ORDER BY 

  "Grupo_Conta", "Data_Efetivado", "Data_Vencimento"

 

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a