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

Helio Cássio

Pergunta

boa tarde

senhores, estou com a seguinte situação preciso calcular media do preço unitario mais o valor so sai correto se eu colocar o group by mais preciso dos 2 valores em um comando so atualmente so consigo separado

select (avg(case when operacao='V' then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V' then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V' then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group p.nome;

select (avg(case when operacao='V' then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V' then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V' then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group by p.grupo;

se eu não colocar o group by o valor sair incorreto pois ele pega de todos produtos e preciso desse 2 resultado em um comando so não sei se criando uma tabela temp poderia ajuda nesse sentindo pois nunca utilizei esse ferramenta.

Não sei se expliquei bem.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Cara, se você ta somando, você tem q usar group by

Deixa te dar uma dica, quando postar codigo aqui use as tags pra codigo, e se possivel identa o sql pra ficar mais facil de ler,

tenta colocar um union all entre as consultas e deve trazer os 2 dados q você precisa

select (avg(case when operacao='V'  then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V'  then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V'  then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group p.nome
union all
select (avg(case when operacao='V'  then l.preco_unit else NULL end) - avg(case when operacao='E'then l.preco_unit else NULL end) ) as lucro_preco,((avg(case when operacao='V'  then l.preco_unit else NULL end) - avg(custo_medio_empresa_f(l.empresa,l.produto,($data_ini::date -1))))*sum(case when operacao='V'  then l.quantidade else null end) ) from lancto l join produto p on (p.grid=l.produto) join pessoa e on (e.grid=l.empresa) where tipo='='C" group by p.grupo;

Se der certo avisa. eu não li o comando porque alem de grande, ta dificil de ler porque n ta identado, mas o union em tese resolveria.

boa sorte

Editado por Dr. House
Link para o comentário
Compartilhar em outros sites

  • 0

identar cara é arrumar o codigo.

select
  (avg(case 
    when operacao='V'  then l.preco_unit 
    else NULL 
  end) - avg(case 
    when operacao='E'then l.preco_unit 
    else NULL 
  end) ) as lucro_preco,
  ((avg(case 
    when operacao='V'  then l.preco_unit 
    else NULL 
  end) - avg(custo_medio_empresa_f(l.empresa,
  l.produto,
  ($data_ini::date -1))))*sum(case 
    when operacao='V'  then l.quantidade 
    else null 
  end) ) 
from
  lancto l 
join produto p on (p.grid=l.produto) 
join pessoa e on (e.grid=l.empresa) 
where
  tipo='C'
group 
  p.nome
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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...