Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jrbz

Como organizar sem usar order by

Recommended Posts

Bom dia, tenho um sistema de gerenciamento de senhas onde tenho o campo prioridade para idosos, geral e financeiro.

Preciso de um script para listar as senhas emitidas de forma organizada por prioridade

 

O problema: idoso é prioridade 1, geral é 3 e financeiro = 2 ou seja se eu fizer um order by prioridade, vai resultar em 1,2,3 e preciso que o resultado seja 1,3,2

 

Tentei o seguinte sem sucesso pois saiu tudo misturado

 

Select a.* from TBSenhaEmitida as a where a.Prioridade = 1

Union

( Select c.* from TBSenhaEmitida as c where c.Prioridade = 3 )

Union

( Select e.* from TBSenhaEmitida as e where e.Prioridade = 2 )

 

Assim saiu organizado em ordem numerica

 

Select a.prioridade,datahora from TBSenhaEmitida as a

Where a.status=1 and a.Prioridade in (1)

Group by Prioridade,datahora

Union

(

Select a.prioridade,datahora from TBSenhaEmitida as a

Where a.status=1 and a.Prioridade in (3)

Group by Prioridade,datahora

)

Union

(

Select a.prioridade,datahora from TBSenhaEmitida as a

Where a.status=1 and a.Prioridade in (2)

Group by Prioridade,datahora

)

 

Aguardo ajuda de voces

 

JRBZ

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o CASE.

 

Select (case when a.prioridade = 1 then 0
             when a.prioridade = 2 then 2 
             when a.prioridade = 3 then 1
             else -1 end) prior_real,
       a.prioridade,datahora from TBSenhaEmitida as a
Where a.status=1 and a.Prioridade in (1)
Group by Prioridade,datahora
Union
(
Select (case when a.prioridade = 1 then 0
             when a.prioridade = 2 then 2 
             when a.prioridade = 3 then 1
             else -1 end) prior_real,
       a.prioridade,datahora from TBSenhaEmitida as a
Where a.status=1 and a.Prioridade in (3)
Group by Prioridade,datahora
)
Union
(
Select (case when a.prioridade = 1 then 0
             when a.prioridade = 2 then 2 
             when a.prioridade = 3 then 1
             else -1 end) prior_real,
       a.prioridade,datahora from TBSenhaEmitida as a
Where a.status=1 and a.Prioridade in (2)
Group by Prioridade,datahora
) 
order by 1,3

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.