Resolvido
Graças a ajuda de vocês consegui chegar a um consenso aqui:
select distinct
a.pedido,
a.agendamento,
b.descricao
from mv_vendas_pre_agenda a
inner join mv_status b on(b.status = a.agendamento)
where not exists(
select distinct
1
from mv_vendas_pre_agenda
where (agendamento <> 'N')
and(pedido = a.pedido)
)
order by a.pedido;
Mudei a estrutura do meu banco e peguei de uma outra tabela que vai guardar o
ultimo status do servico.
E de canja o select ficou bem mais simples
Creditos especiais ao Flavio, Edson e Paulo, mas claro que todos merecem minhas
estimas, rsrsrs valeus
Muito obrigado mesmo
From: Wagner Porto
Sent: Thursday, May 17, 2012 3:17 PM
To: [email protected]
Subject: Re: [pgbr-geral] Ajuda em Select
Boa tarde !
Marcelo, de acordo com o teu cenário
você pode buscar pela quantidade "CODIGO"
que possui o status "N"
total de linhas = total de linhas com status "N".
Acredito ser por ai teu caminho,
Mais um detalhe,
você não consegue incluir mais um inner join no teu segundo select ?
Ficaria + limpo
Boa sorte.
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
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
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral