/* Daê Thiago Abaixo uma possível solução para o seu problema, desenvolvida utilizando o padrão POG:
*/ -- Tabelinha de teste create table teste(id serial, descricao text, valor decimal(8,2)); -- View auxiliar para definir tipo de retorno da função (chuncho) create view teste_view as select *, null::char(1) from teste; -- Função pra popular a tabelinha teste (chuncho de teste) CREATE OR REPLACE FUNCTION public.popula_teste() RETURNS boolean AS $BODY$ DECLARE contador integer; BEGIN contador := 1; for contador in 0..200 loop insert into teste values(contador,'desc '||contador::varchar, contador*10::decimal); end loop; RETURN true; EXCEPTION WHEN OTHERS THEN END; $BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100; -- Popula a tabelinha teste com a função (gambiarra básica... ) select popula_teste(); -- Cria função que retorna os 100 primeiros registros da tabela teste -- onde os 25 primeiros terão o atributo classe = A, os 25 seguintes = B, etc... CREATE OR REPLACE FUNCTION public.select_classific() RETURNS SETOF teste_view AS $BODY$ DECLARE contador smallint; classe char(1); registro teste_view%rowtype; BEGIN for contador in 0..3 loop classe := (case when contador = 0 then 'A' when contador = 1 then 'B' when contador = 2 then 'C' else 'D' end); for registro in select id, descricao,valor,classe from teste order by valor desc limit 25 offset 25*contador loop RETURN NEXT registro; end loop; end loop; RETURN; EXCEPTION WHEN OTHERS THEN END; $BODY$ LANGUAGE 'plpgsql'; -- Utilização da função select * from public.select_classific() ; -- :p /* Apesar de ser uma solução POG, utilizo coisa semelhante aqui na nossa empresa e tem funcionado bem... Abrç Chiqueti */ 2009/8/17 Thiago <zan...@farmaponte.com.br>: > Galera, bom dia. > > Seguinte estou precisando fazer um select em uma base de produtos onde > vou encontrar as curvas de vendas dos produtos, ou seja, tenho um select > que me retorna 100 itens quero que para os 25% que listarem primeiro me > mostre A, para os próximos 25% mostre B e na sequencia C e D. > > Pensei em fazer manualmente utilizando algum tipo de paginação, tipo, > faço um select com limit 25 por exemplo (essa conta vou ter que fazer na > mão) e tipo em um outro select listo mais 25 mas mostrando a partir do 26. > > Existe como fazer isso? > > Obrigado! > > _______________________________________________ > 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