solução:
SELECT * FROM cross_tab(' SELECT sc.codigo_cliente, row_number() over(partition by sc.codigo_cliente order by sc.numero_controle desc) as num_pedido, sc.numero_controle from saida_venda sc' , 'select m from generate_series(1,4) m') as ( codigo_cliente int, pedido1 int, pedido2 int, pedido3 int, pedido4 int ) mas pode demorar um pouco a consulta dependendo do tamanho da tabela porque trabalha com campo não indexado (o gerado pelo row_number), talvez vc deva otimizar isto. 2014/1/21 Antonio Cesar <cgcesarsoa...@gmail.com> > Boa tarde pessoal, > Estou precisando de um select que retorne os 4 ultimos pedidos de cada > cliente. > EX: > Cliente 001 pedido 10, 15, 18 e 20 > Cliente 002 pedido 11, 12, 13 e 14 > > SELECT > sc.codigo_cliente, > MAX(sc.numero_controle) AS numero_controle > FROM > saida_venda sc > GROUP BY > sc.codigo_cliente > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Dadilton Bastos Melo
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral