Mauricio De Biasi escreveu:
> Pessoal,
>
> To com uma duvida aparetemente simples tenho uma tabela:
>
> id_tipo_frequencia int4 NOT NULL,
> ds_reduzida varchar(100),
> ds_completa text,
> ts_inclusao timestamp DEFAULT ('now'::text)::timestamp(6) with time zone,
> ts_cancelado timestamp,
>
> com esses dados :
> id_tipo_frequencia ds_reduzida ds_completa ts_inclusao
> ts_cancelado
> 2 F Falta 2005-11-21 09:54:03.989148
> 4 Fe Ferias 2005-12-01 10:50:29.154619
> 3 P Presente 2005-11-21 09:54:17.29012
> 8 LMA Licença Maternidade 2006-06-01 14:48:53.292598
> 9 LME Licença Médica 2006-06-01 14:50:29.259519
> 10 SI Serviço Interno 2006-06-01 14:50:48.487416
> 11 SE Serviço Externo 2006-06-01 14:51:56.11255
> 7 S Serviço 2006-03-01 15:33:23.119624 2006-06-13
> 11:47:30.453137
> 12 R Reunião 2006-06-14 09:17:08.44196
>
> e quero fazer uma ordenação dessa maneira :
>
> P - F - SI - SE - R - FE - LMA - LME.
>
> tem como fazer isso ? sem colocar uma coluna chamada ordenação ?
>
Utilizando CASE:
SELECT *, (CASE
WHEN ds_reduzida = 'P' THEN 1
WHEN ds_reduzida = 'F' THEN 2
WHEN ds_reduzida = 'SI' THEN 3
WHEN ds_reduzida = 'SE' THEN 4
WHEN ds_reduzida = 'R' THEN 5
WHEN ds_reduzida = 'FE' THEN 6
WHEN ds_reduzida = 'LMA' THEN 7
WHEN ds_reduzida = 'LME' THEN 8
ELSE 9
END) AS x
FROM sua_tabela
ORDER BY x;
[]s
Osvaldo
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios