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

Responder a