Re: [pgbr-geral] Ajuda em Select
Acredito que vc não precise colocar o 'distinct' em select distinct 1 from mv_vendas_pre_agenda where (agendamento <> 'N') and(pedido = a.pedido) Bruno E. A. Silva. Analista de Sistemas. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
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: pgbr-geral@listas.postgresql.org.br 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: marc...@ig.com.br Cel.: (11) 9693-4251 Cel.: (11) 5250-1407 Desenvolvedor Delphi, PHP, ASP Empresa: Perfil "Medicina e Segurança do Trabalho" ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
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: marc...@ig.com.br Cel.: (11) 9693-4251 Cel.: (11) 5250-1407 Desenvolvedor Delphi, PHP, ASP Empresa: Perfil "Medicina e Segurança do Trabalho" ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
rsrsr, opa, Obrigado aí Flavio... estou tentando aqui com as ideias que estao me passando... mas ainda não cheguei ao resultado que quero... mas vou amadurecer a ideia... agradeço muito a ajuda de voces... -Mensagem Original- From: Flavio Henrique Araque Gurgel Sent: Thursday, May 17, 2012 2:58 PM To: pgbr-geral@listas.postgresql.org.br Subject: Re: [pgbr-geral] Ajuda em Select Em 17-05-2012 14:55, Marcelo Silva (IG) escreveu: > Não posso me fixar em 'I' pois existem varios status Pô cara, ajusta aí! Você pediu caminhos, lembra? Segue uma diferente: 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 Vê se assim te atende. Mudou só a igualdade. []s Flavio Henrique A. Gurgel Consultor e Instrutor 4Linux Tel: +55-11-2125-4747 www.4linux.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
Em 17/05/12, Marcelo Silva (IG) escreveu: > Ainda nao deu > > Mas estou na luta aqui > > From: Edson neto > Sent: Thursday, May 17, 2012 2:26 PM > To: Marcelo Silva (IG) ; Comunidade PostgreSQL Brasileira > Subject: Re: [pgbr-geral] Ajuda em Select > > 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) > 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 > Não consigo entender por que a solução do Edson não deu certo. Talvez eu não tenha entendido o problema corretamente. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
Em 17-05-2012 15:02, Paulo Vitor Bettini de Albuqerque Lima escreveu: > eu tentaria colocar um max(pedido), já que o que importa é o último > status do pedido... Acho que não, o que ele citou é que precisava extrair pedidos que não contivessem nada com 'N'. []s Flavio Henrique A. Gurgel Consultor e Instrutor 4Linux Tel: +55-11-2125-4747 www.4linux.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
eu tentaria colocar um max(pedido), já que o que importa é o último status do pedido... Atenciosamente, Paulo Vitor Bettini de Albuquerque Lima http://about.me/paulolima Em 17 de maio de 2012 14:55, Marcelo Silva (IG) escreveu: > Não posso me fixar em 'I' pois existem varios status > > > -Mensagem Original- > From: Flavio Henrique Araque Gurgel > Sent: Thursday, May 17, 2012 2:27 PM > To: pgbr-geral@listas.postgresql.org.br > Subject: Re: [pgbr-geral] Ajuda em Select > > 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 > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
Em 17-05-2012 14:55, Marcelo Silva (IG) escreveu: > Não posso me fixar em 'I' pois existem varios status Pô cara, ajusta aí! Você pediu caminhos, lembra? Segue uma diferente: 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 Vê se assim te atende. Mudou só a igualdade. []s Flavio Henrique A. Gurgel Consultor e Instrutor 4Linux Tel: +55-11-2125-4747 www.4linux.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
Não posso me fixar em 'I' pois existem varios status -Mensagem Original- From: Flavio Henrique Araque Gurgel Sent: Thursday, May 17, 2012 2:27 PM To: pgbr-geral@listas.postgresql.org.br Subject: Re: [pgbr-geral] Ajuda em Select 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
Ainda nao deu Mas estou na luta aqui From: Edson neto Sent: Thursday, May 17, 2012 2:26 PM To: Marcelo Silva (IG) ; Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Ajuda em Select 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) 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: marc...@ig.com.br Cel.: (11) 9693-4251 Cel.: (11) 5250-1407 Desenvolvedor Delphi, PHP, ASP Empresa: Perfil "Medicina e Segurança do Trabalho" ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral wlEmoticon-smile[1].png Description: Binary data ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
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) 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: marc...@ig.com.br > Cel.: (11) 9693-4251 > Cel.: (11) 5250-1407 > Desenvolvedor Delphi, PHP, ASP > Empresa: Perfil "Medicina e Segurança do Trabalho" > > ___ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda em Select
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: marc...@ig.com.br Cel.: (11) 9693-4251 Cel.: (11) 5250-1407 Desenvolvedor Delphi, PHP, ASP Empresa: Perfil "Medicina e Segurança do Trabalho"___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda em Select
2008/5/21 Saulo Morais Lara <[EMAIL PROTECTED]>: > Preciso fazer uma consulta pela freqüência de compras (em dias), de cada > cliente. > > De qto em qto tempo ele costuma comprar. > > Alguem pode me dar o caminho das pedras? Como estão organizados os dados? Enquanto isso, sugiro o livro do Date… -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED] +55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803 +55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED] ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda em Select
Preciso fazer uma consulta pela freqüência de compras (em dias), de cada cliente. De qto em qto tempo ele costuma comprar. Alguem pode me dar o caminho das pedras? Obrigado ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral