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

Responder a