Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robson Bie

[Resolvido] Sql

Recommended Posts

Boa Tarde

 

O Motta já havia me ajudado com essa select mas mudei a estrutura da tabela e agora não estou conseguindo fazer ela funcionar.

 

o SQL é o seguinte:

 

select ai.produto,ai.descritivo,

sum(cont1)qtde1,

sum(cont2)qtde2,

sum(cont3)qtde3

from

ai_inventario_contagens ai

where

ai.inventario = :inventario

group by

ai.produto,ai.descritivo

order by

ai.produto

 

Preciso criar mais uma coluna chamada EXPORTA na seguinte condição: Se houve valor na qtd3 mando ou valor da qtde 3 se não houver mando o valor da qtde2 se não houver mando o valor da qtde1.

 

 

No outro topico eu tinha o coluna contagem e nela os valores 1, 2 e 3 agora não tem mais o campo contagem e sim cont1,cont2 e cont3.

 

o sql que tinha resolvido o problema foi esse:

 

select pt.lote,pt.id,pt.descritivo,pt.produto,pt.prod_pai,pt.letra,

sum(CASE WHEN contagem=1 THEN qtde END) contagem1,

sum(CASE WHEN contagem=2 THEN qtde END) contagem2,

sum(CASE WHEN contagem=3 THEN qtde END) contagem3,

Nvl(sum(CASE WHEN contagem=3 THEN qtde END), --

Nvl(sum(CASE WHEN contagem=2 THEN qtde END),

sum(CASE WHEN contagem=1 THEN qtde END))) exporta

 

from

rh_inv_prodt pt

where

pt.id = :id

group by pt.lote,pt.id,pt.descritivo,pt.produto,pt.prod_pai,pt.letra

order by pt.produto

 

Na hora de fazer o NVL é que estou me perdendo.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio que

 

select pt.lote,pt.id,pt.descritivo,pt.produto,pt.prod_pai,pt.letra,   
sum(CASE WHEN cont1 is not null THEN qtde END) contagem1,   
sum(CASE WHEN cont2 is not null THEN qtde END) contagem2,  
sum(CASE WHEN cont3 is not null THEN qtde END) contagem3, 
Nvl(sum(CASE WHEN cont3 is not null  THEN qtde END), --
   Nvl(sum(CASE WHEN cont2 is not null THEN qtde END), 
       sum(CASE WHEN cont1 is not null THEN qtde END))) exporta 

from   
rh_inv_prodt pt   
where  
pt.id = :id 
group by pt.lote,pt.id,pt.descritivo,pt.produto,pt.prod_pai,pt.letra 
order by pt.produto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Motta, obrigado pelo atenção, mas não deu certo.

 

Na verdade tem que se basear nesse sql:

 

select ai.produto,ai.descritivo,
sum(cont1)qtde1,
sum(cont2)qtde2,
sum(cont3)qtde3
from 
ai_inventario_contagens ai
where 
ai.inventario = :inventario
group by
ai.produto,ai.descritivo
order by
ai.produto

 

Em cima desse preciso criar a regra para criar a coluna exporta.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez o greatest funcione aqui.

 

select ai.produto,ai.descritivo,
sum(cont1) qtde1,
sum(cont2) qtde2,
sum(cont3) qtde3,
greatest(sum(cont1),sum(cont2),sum(cont3)) exporta
from 
ai_inventario_contagens ai
where 
ai.inventario = :inventario
group by
ai.produto,ai.descritivo
order by
ai.produto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, dessa forma que voce passou ele pega o maior valor e joga no exporta na verdade não é isso que preciso.

 

Partindo da logica do primeiro sql que você me passou consegui resolver fazendo algumas alterações, ficou assim:

 

select ai.produto,ai.descritivo,

sum(cont1)qtde1,

sum(cont2)qtde2,

sum(cont3)qtde3,

Nvl(sum(CASE WHEN cont3 > 0 THEN cont3 END),

Nvl(sum(CASE WHEN cont2 > 0 THEN cont2 END),

sum(CASE WHEN cont1 > 0 THEN cont1 END))) exporta

from

ai_inventario_contagens ai

where

ai.inventario = :inventario

group by

ai.produto,ai.descritivo

order by

ai.produto

 

Dessa forma resolveu a questão.

 

Mais uma vez muito obrigado pela força

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.