Em 17/05/12, Marcelo Silva (IG)<[email protected]> escreveu: > Ainda nao deu > > Mas estou na luta aqui > > From: Edson neto > Sent: Thursday, May 17, 2012 2:26 PM > To: Marcelo Silva (IG) ; Comunidade PostgreSQL Brasileira > Subject: Re: [pgbr-geral] Ajuda em Select > > Marcelo, acredito que utilizando um not exists resolveria seu problema > with tmp as (select distinct > a.pedido, > a.status, > b.descricao > from mv_servicos_status a > inner join mv_status b on(b.status = a.status) > where (a.data_bai + a.hora_bai) = > (select max(data_bai + hora_bai) > from mv_servicos_status > where (pedido = a.pedido) > and(codigo = a.codigo) > and(a.pedido in(36663, 37228))) > order by a.pedido) > > > select * from tmp t1 where t1.status='N' and not exists(select 1 from tmp t2 > where t1.pedido=t2.pedido and t2.status!='N'); > > > > > > Em 17 de maio de 2012 14:14, Marcelo Silva (IG) <[email protected]> > escreveu: > > Pessoal, tenho o seguinte select: > > select distinct > a.pedido, > a.status, > b.descricao > from mv_servicos_status a > inner join mv_status b on(b.status = a.status) > where (a.data_bai + a.hora_bai) = > (select max(data_bai + hora_bai) > from mv_servicos_status > where (pedido = a.pedido) > and(codigo = a.codigo) > and(a.pedido in(36663, 37228))) > order by a.pedido > > > Que me retorna as linhas: > > 36663 | I | CONFÊNCIA PEDIDO > 36663 | N | ENTREGUE AO CLIENTE > 37228 | N | ENTREGUE AO CLIENTE > > Agora preciso de um select incorporado com o acima que me retorne somente > os pedidos que tiverem somente ‘N’ > Ou seja o 36663 não entraria no resultado do segundo select por ter um > status ‘I’ em sua lista > Não posso simplesmente colocar um and(status = ‘N’) porque o pedido vai > mudando o status a cada instante > > Explicando o cenário: > > Os dados que tenho são uma tabela onde guardo o status dos pedidos e > dentro dos pedidos tenho varios servicos, exemplo: > > pedido | codigo | status > 1234 | 01 | I –> CONFERENCIA > 1234 | 02 | N –> ENTREGUE > 1234 | 03 | A –> AGENDAR > 1234 | 04 | I –> CONFERENCIA > 1234 | 05 | E –> EM ESPERA > 4321 | 01 | N –> ENTREGUE > 4321 | 02 | N –> ENTREGUE > 4321 | 03 | N –> ENTREGUE > > Preciso trazer somente os pedidos que estão com o ultimo status todos = > “N”, > apesar do pedido 1234 ter um “N” ele não viria pois tem outros status nos > outros servicos, > mas só o 4321 viria por estar totalmente “N” (ENTREGUE) > > > Tentei algumas coisas aqui mas não cheguei ao resultado esperado > > Não sei se fui claro na explicação, espero que sim. > Será que podem dar uma dica nesse select? > Claro que não precisam me dar o select pronto, > mas só a uma dica de como formatar esse select, > sabe quando a cabeça da um nó, rsrsrs >
Não consigo entender por que a solução do Edson não deu certo. Talvez eu não tenha entendido o problema corretamente. Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
