[RESOLVIDO] SQL SERVR - Query para ordenação conjugada

5 respostas
jMarcel

Pessoal,

tenho a seguinte tabela A:

cod	meta	realizado	etapa	atingimento(%)
x	100		50			1		50
y	100		75			1		75
z	200		180			2		90
w	100		60			2		60
a	500		250			3		50
b	800		400			3		50
c	400		400			4		100
d	500		500			2		100

E quero ordena-la de acordo com a etapa 1 ou 2 seguido do maior % de atingimento. Assim:

cod	meta	realizado	etapa	atingimento(%)
d	500		500			2		100
z	200		180			2		90
y	100		75			1		75
w	100		60			2		60
x	100		50			1		50
a	500		250			3		50
b	800		400			3		50
c	400		400			4		100

Obs.: as linhas que não estão na etapa 1 ou 2 não precisam necessariamente estar ordenadas, porém deverão ser mostradas.

Alguém sabe montar essa query?

5 Respostas

E

http://msdn.microsoft.com/pt-br/library/ms181765.aspx

M

Olá,

Tente criar um campo durante a execução da query para saber como ordenar, por exemplo (MySQL):

SELECT cod meta, realizado, etapa, atingimento, IF(etapa IN (1, 2), 0, 1) AS ordenacao
FROM tabela
ORDER BY ordenacao, atingimento DESC

Acho que funcionará.

jMarcel

Pessoal,

pesquisei e solucionei da seguinte maneira:

select cod, meta, realizado, etapa, atingimento, RANK() OVER(ORDER BY sum(etapa) desc, sum((realizado)*1.0)/SUM(meta)*100 DESC)) as Classificacao from tabela_A

Mesmo assim obrigado pela atenção.

jMarcel

entanglement:
http://msdn.microsoft.com/pt-br/library/ms181765.aspx

Obrigado pela sua atenção.

jMarcel

molmedo:
Olá,

Tente criar um campo durante a execução da query para saber como ordenar, por exemplo (MySQL):

SELECT cod meta, realizado, etapa, atingimento, IF(etapa IN (1, 2), 0, 1) AS ordenacao
FROM tabela
ORDER BY ordenacao, atingimento DESC

Acho que funcionará.

Obrigado pela sua atenção.

Criado 21 de agosto de 2012
Ultima resposta 22 de ago. de 2012
Respostas 5
Participantes 3