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
>
>
> Marcelo Silva
> ------------------------------------------
> msn: [email protected]
> Cel.: (11) 9693-4251
> Cel.: (11) 5250-1407
> Desenvolvedor Delphi, PHP, ASP
> Empresa: Perfil "Medicina e Segurança do Trabalho"
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral