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

Responder a