Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvidas Query WITH


Alphak

Pergunta

Olá,

Gostaria saber o que está faltando nesta sentença sql, pois está trazendo dados duplicados, como ilistrado na imagem anexo.

WITH v_entradas AS(

SELECT DISTINCT

COALESCE(round(SUM (ent_valor), 4), 0)AS soma

FROM

entradas

WHERE

EXTRACT(YEAR FROM ent_data)= EXTRACT(YEAR FROM now())

GROUP BY

EXTRACT(MONTH FROM ent_data)

),

v_saidas AS(

SELECT DISTINCT

COALESCE(round(SUM (sai_valor), 4), 0)AS soma2

FROM

saidas

WHERE

EXTRACT(YEAR FROM sai_data)= EXTRACT(YEAR FROM now())

GROUP BY

EXTRACT(MONTH FROM sai_data)

)SELECT DISTINCT

soma,

soma2,

soma - soma2 AS saldo

FROM

v_entradas,v_saidas

where v_entradas.soma in (SELECT DISTINCT soma from v_entradas)

and v_saidas.soma2 in (SELECT DISTINCT soma2 from v_saidas)

querypng.gif

tabelaspng.gif

Obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Pelo que entendi o que você quer é isto:

with v_entradas as (
    select
        date_trunc('month', ent_data) mes,
        sum(coalesce(ent_valor, 0)) soma
    from entradas
    where extract(year from ent_data) = extract(year from now())
    group by 1
), v_saidas as (
    select
        date_trunc('month', sai_data) mes,
        sum(coalesce(sai_valor, 0)) soma
    from saidas
    where extract(year from sai_data) = extract(year from now())
    group by 1
)
select
    to_char(e.mes, 'YYYY-MM') mes,
    round(e.soma, 4) soma,
    round(s.soma, 4) soma,
    round(e.soma - s.soma, 4) saldo
from
    v_entradas e
    inner join
    v_saidas s on e.mes = s.mes

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

  • 0
Pelo que entendi o que você quer é isto:

with v_entradas as (
    select
        date_trunc('month', ent_data) mes,
        sum(coalesce(ent_valor, 0)) soma
    from entradas
    where extract(year from ent_data) = extract(year from now())
    group by 1
), v_saidas as (
    select
        date_trunc('month', sai_data) mes,
        sum(coalesce(sai_valor, 0)) soma
    from saidas
    where extract(year from sai_data) = extract(year from now())
    group by 1
)
select
    to_char(e.mes, 'YYYY-MM') mes,
    round(e.soma, 4) soma,
    round(s.soma, 4) soma,
    round(e.soma - s.soma, 4) saldo
from
    v_entradas e
    inner join
    v_saidas s on e.mes = s.mes

Olá,

Muito obrigado pela ajuda na query,

Estive testando e funcionou bem,

gostaria esclarecer mais uma dúvida, quando uma das tabelas não contêm dados a query não retorna nada, teria alguma maneira de mandar o valor zero para soma?

Obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

  • 0

Para mostrar os meses sem movimento fica assim:

with v_entradas as (
    select
        date_trunc('month', ent_data) mes,
        sum(ent_valor) soma
    from entradas
    where extract(year from ent_data) = extract(year from now())
    group by 1
), v_saidas as (
    select
        date_trunc('month', sai_data) mes,
        sum(sai_valor) soma
    from saidas
    where extract(year from sai_data) = extract(year from now())
    group by 1
)
select
    to_char(gs.mes, 'YYYY-MM') mes,
    round(coalesce(e.soma, 0), 4) entrada,
    round(coalesce(s.soma, 0), 4) saida,
    round(coalesce(e.soma, 0) - coalesce(s.soma, 0), 4) saldo
from
    v_entradas e
    inner join
    v_saidas s on e.mes = s.mes
    right outer join
    generate_series (
        date_trunc('year', now()),
        date_trunc('year', now()) + interval '1 year - 1 month',
        '1 month'
    ) gs(mes)

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...