Em 17-05-2012 14:14, Marcelo Silva (IG) 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

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)))
                and
                        a.pedido not in (SELECT DISTINCT pedido FROM 
mv_servicos_status WHERE 
status = 'I')
order by
        a.pedido
;

Não testei aqui mas assim deve trazer o que você quer.
[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a