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

Responder a