Ir para conteúdo

POWERED BY:

Arquivado

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

Querendo_ser_Nerd

If ou Case

Recommended Posts

Bom dia, tudo bem?

 

 

Sr.s estou desenvolvendo uma view e a questão é, a função é retonar cod. de pessoas e suas cidades, porém um usuário especifico neste meio tem que retornar apenas a cidade 'Campinas' e os demais tanto faz.

 

Ex:

 

Roando São Paulo

Ronado Barretos

Thiago Ribeirão Preto

Thiago Araras

Leandro Campinas

 

Seria algo simples, mas para isso precisei fazer o CASE para que quando fosse o cod. 173(Leandro) e cidade Cod. 8493(Campinas) traga todos de Campinas, os demais não importa, porém é preciso sair no relatorio. Veja o criterio.

 

and p.seqpessoa = (select z.seqpessoa --, count(z.seqpessoa)
from mad_clienterep z, mad_representante w
where z.nrorepresentante = w.nrorepresentante
and z.seqpessoa = p.seqpessoa
and w.nroempresa = c.nroempresa
and w.nroequipe = (select rr.nroequipe
from mad_representante rr,ge_pessoa pp
where w.nrorepresentante = rr.nrorepresentante
and pp.seqpessoa = rr.seqpessoa
and w.nroempresa = rr.nroempresa
and rr.tiprepresentante not in ('T')
-- and rr.nrorepresentante in (426,427)
and pp.fantasia not like ('%FUNCIONARIA TELEVENDAS%')
and pp.fantasia not like ('%FUNCIONARIO TELEVENDAS%'
)
and w.seqrepresentante in (case when w.nrorepresentante = 427 then 9519 end)
and z.status = 'A'
and w.tiprepresentante not in ('E','T') --> incluido em 26/06/2014 >> para não trazer representante tipo televendas ou empresa
group by z.seqpessoa
)

 

Ele retorna apenas, o Leandro e Campinas os demais não está trazendo o que devo fazer.

 

Obrigado.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é isto ....

 

and ( (w.nrorepresentante = 427 and w.seqrepresentante = 9519)

or

(w.nrorepresentante <> 427) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, tudo bem?

 

Prezados, ainda estou com um problema relacionado, a questão é a seguinte. Preciso que mostre assim, Caso comprou o cod. da marca 379 vc diz Grendene caso não vc coloca "não comprou" eu fiz um case, porém ele está retonarndo os dois valores quando ele compra, no caso Grandene e Não comprou. Eu vi que o case não da para utilizar o Or por este motivo esta retornando os dois alguem poderia me ajudar,

 

 

Veja

 

 

(case when g.seqmarca = 379 then decode(g.seqmarca,'379','Grendene')
when g.seqmarca <> 379 then 'Não compra Grendene' end ) as Marca,p.atividade

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brow ainda está duplicando, pois está funcionando assim o cliente comprou sim então Grendene o mesmo cliente fez um pedido naquele mesmo periodo mas não comprou Grendene então retorna "Não comprou", eu preciso que ele comrprou uma vez no mes apenas ok então retonar, não quero que informe que ele fez outro pedido e não comprou, está complicado =\

Compartilhar este post


Link para o post
Compartilhar em outros sites


select distinct c.seqpessoa as cliente,p.nrocgccpf||'.'||p.digcgccpf as CNPJ,p.cidade,c.statuscliente,

--(Case when f.seqmarca = 379 then 'Grendene' else 'Não compra Grendene' end)

(case when f.seqmarca = 379 and ( select count (cc.seqpessoa) from ge_pessoa cc where cc.seqpessoa = c.seqpessoa and f.seqmarca = 379 ) = 1 then decode(f.seqmarca,'379','Grendene') else 'Não compra Grendene' end)

-- when \*f.seqmarca <> 379 and *\( select count (vv.nropedvenda) from mad_pedvenda vv where vv.nropedvenda = i.nropedvenda) = 1 then 'Não compra Grendene' end )*/ p.atividade

from mrl_cliente c, ge_pessoa p,map_produto m,map_familia f,mad_pedvenda v,mad_pedvendaitem i,map_marca g

where p.seqpessoa = c.seqpessoa

and f.seqfamilia = m.seqfamilia

and f.seqmarca = g.seqmarca

and v.seqpessoa = c.seqpessoa

and ( select count (cc.seqpessoa) from ge_pessoa cc where cc.seqpessoa = c.seqpessoa ) = 1

and i.nropedvenda = v.nropedvenda

and m.seqproduto = i.seqproduto

and c.seqpessoa in (30412)

and p.atividade = 'SUPERMERCADO'

--and f.seqmarca = 379

and v.dtainclusao between '01-oct-2014' and '20-oct-2014'

and c.statuscliente = 'A'

and c.nroempresa = 1

and v.nroempresa = 1

and p.uf = 'SP'

--group by m.seqproduto,c.seqpessoa,p.nrocgccpf,p.digcgccpf,p.cidade,c.statuscliente,p.atividade,g.seqmarca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente está complicado de entender o problema, vamos lá!

 

Você quer que quando o cliente fizer um pedido que a marca seja 379, mostre para você Grendene, e se o mesmo cliente fizer um outro pedido que não seja a marca 379, ainda assim tem que aparecer Grendene somente, pois ele já comprou anteriormente.

Porém se o cliente nunca comprou a marca 379 então mestre 'Não compra Grendene'.

 

Seria isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um group by somando o valor comprado , se for maior que zero >> comprou.

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.