Re: [pgbr-geral] RES: SQL Select

2017-06-23 Por tôpico Arthur Nascimento
>Em 23/06/2017, Ricardo escreveu:
>> Usando select não vou conseguir, vou trabalhar com um função para seguar
>> nesse resultado abaixo.

Consegue sim. Você pode usar a window function lag() para acessar dados de
janelas passadas. Mas...

On Fri, Jun 23, 2017 at 1:31 PM Osvaldo Kussama 
wrote:
> Mas isto tem algum sentido?

...concordo que está parecendo estranho. Melhor parar e pensar no resultado
que você quer alcançar antes de continuar tentando escrever o select na
tentativa-e-erro.
-- 

Arthur Nascimento - tureba
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] RES: SQL Select

2017-06-23 Por tôpico Ricardo

Mas isto tem algum sentido?


É um view onde lista a soma das entradas e saidas por mês, o problema está 
quando não há entrada ou saídas.


Está complicado mesmo, mas não posso mudar as tabelas.

CREATE OR REPLACE VIEW public."Extrato" (
   "Tipo",
   "Referencia",
   "Ano",
   "Valor_Mes",
   "Mes",
   "Valor_Parcial_Entrada",
   "Valor_Parcial_Saida")
AS
SELECT'Entrada'::text AS "Tipo",
   p."Referencia",
   p."Ano",
   p."Valor_Mes",
   p."Mes",
   sum(p."Valor_Mes") OVER ( ORDER BY p."Mes") AS 
"Valor_Parcial_Entrada",

   0 AS "Valor_Parcial_Saida"

   FROM (

   SELECT   "Tabela_Consumo"."Referencia",
 "Tabela_Consumo"."Ano",
  sum("Tabela_Consumo"."Valor") 
AS "Valor_Mes",

 "Tabela_Consumo"."Mes"
  FROM "Tabela_Consumo"
   GROUP BY "Tabela_Consumo"."Referencia", 
"Tabela_Consumo"."Ano"

   ORDER BY "Tabela_Consumo"."Referencia"
   ) p

UNION

SELECT'Saida'::text AS "Tipo",
   q."Referencia",
   q."Ano",
   q."Valor_Mes",
   q."Mes",
   0 AS "Valor_Parcial_Entrada",
   sum(q."Valor_Mes") OVER ( ORDER BY q."Mes" ) AS 
"Valor_Parcial_Saida"


   FROM (

   SELECT "Tabela_Despesa"."Referencia",
   "Tabela_Despesa"."Ano",
   sum("Tabela_Despesa"."Valor") 
AS "Valor_Mes",

   "Tabela_Despesa"."Mes"
   FROM "Tabela_Despesa"
GROUP BY "Tabela_Despesa"."Referencia", 
"Tabela_Despesa"."Ano"

ORDER BY "Tabela_Despesa"."Referencia"
   ) q

ORDER BY "Mes", "Tipo";






Osvaldo

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


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

Re: [pgbr-geral] RES: SQL Select

2017-06-23 Por tôpico Osvaldo Kussama
Em 23/06/2017, Ricardo escreveu:
> Descobri aonde está o erro. Nem sempre tem registro entrada e saida no mes,
> dando o erro.
> Por exemplo:
> Tipo  |  Mês  |  Valor Entrada | Valor Saida |
>
> -
>
>E| 1| 100,00 |0  |
>
>S| 1| 0  | 200,00|
>
>E| 2|  150,00|0  |
>
>S| 2| 0  |230,00 |
>
>E| 3| 200,00 |0  |
>
>S| 3| 0  |310,00 |
>
>E| 4| 220,00 |0  |
>
>S| 5| 0  |350,00 |
>
>E| 5| 240,00 |0  |
>
>
>
>
>
> Usando select não vou conseguir, vou trabalhar com um função para seguar
> nesse resultado abaixo.
>
>
>
> |  Mês  |  Valor Entrada | Valor Saida | Resultado ( Valor Entrada –
> Valor Saida ) do Mês
>
> --
>
> | 1| 100,00 | 200,00|  -100,00
>
> | 2| 150,00|  230,00|-80,00
>
> | 3| 200,00 | 310,00|  -110,00
>
> | 4| 220,00 |0  |-90,00 –> Não
> tem o registro de saida do mes 4, usar o valor do mes anterior ( 220,00 –
> 310,00 )
>
> | 5| 240,00 | 350,00|  -110,00
>
>


Mas isto tem algum sentido?

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

Re: [pgbr-geral] RES: SQL Select

2017-06-23 Por tôpico Ricardo
Descobri aonde está o erro. Nem sempre tem registro entrada e saida no mes, 
dando o erro.
Por exemplo:
Tipo  |  Mês  |  Valor Entrada | Valor Saida |

-

   E| 1| 100,00 |0  |

   S| 1| 0  | 200,00|

   E| 2|  150,00|0  |

   S| 2| 0  |230,00 |

   E| 3| 200,00 |0  |

   S| 3| 0  |310,00 |

   E| 4| 220,00 |0  |

   S| 5| 0  |350,00 |

   E| 5| 240,00 |0  |





Usando select não vou conseguir, vou trabalhar com um função para seguar nesse 
resultado abaixo.



|  Mês  |  Valor Entrada | Valor Saida | Resultado ( Valor Entrada – Valor 
Saida ) do Mês 

--

| 1| 100,00 | 200,00|  -100,00

| 2| 150,00|  230,00|-80,00

| 3| 200,00 | 310,00|  -110,00

| 4| 220,00 |0  |-90,00 –> Não tem 
o registro de saida do mes 4, usar o valor do mes anterior ( 220,00 – 310,00 )

| 5| 240,00 | 350,00|  -110,00




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

Re: [pgbr-geral] RES: SQL Select

2017-06-23 Por tôpico Arthur Nascimento
On Fri, Jun 23, 2017 at 9:55 AM Ricardo  wrote:
> Na verdade vou precisar que me retorne o saldo de cada mês ficando assim

Assim é mais tranquilo ainda porque nem precisa de window function;
aggregate function já resolve:

#select teste.mes, sum(v_entrada) as entrada, sum(v_saida) as saida,
sum(v_entrada) - sum(v_saida) from teste group by mes order by 1;
 mes | entrada | saida | ?column?
-+-+---+--
   1 | 100 |   200 | -100
   2 | 150 |   230 |  -80
   3 | 200 | 0 |  200
(3 rows)

-- 

Arthur Nascimento - tureba
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] RES: SQL Select

2017-06-23 Por tôpico Ricardo
Bom dia Giovane,

Na verdade vou precisar que me retorne o saldo de cada mês ficando assim

Tabela

 

Tipo  |  Mês  |  Valor Entrada | Valor Saida |

-

   E| 1| 100,00 |0  |

   S| 1| 0  | 200,00|

   E| 2|  150,00|0  |

   S| 2| 0  |230,00 |

   E| 3| 200,00 |0  |

   S| 3| 0  |0  |

 

Select

 

|  Mês  |  Valor Entrada | Valor Saida | Resultado ( Valor Entrada – Valor 
Saida ) do Mês 

--

| 1| 100,00 | 200,00|  -100,00

| 2| 150,00|  230,00|-80,00

| 3| 200,00 |0  |   200,00




Ontem estava meio nebuloso e me expressei mau...

Obrigado pela atenção.
Ricardo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral