Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, vamos lá, estou com um problemão para realizar a ordenação de alguns dados...
Tenho uma tabela com 10 colunas de respostas (ds_answer[1...10])
Esta coluna recebe valores A (Alta), M (Média);
Preciso ordenar a view com os que contém mais A no top...
Há algum meio?
Consegui apenas ordenar pelo que tivesse maior sequência de A...>
2 horas atrás, Motta disse:
ORDER BY ( (CASE WHEN ds_answer1 = 'A' THEN 1 ELSE 0 END) +
(CASE WHEN ds_answer2 = 'A' THEN 1 ELSE 0 END) +
...
(CASE WHEN ds_answer10 = 'A' THEN 1 ELSE 0 END) )
Outra solução mais limpa seria criar uma coluna virtual que fizesse esta conta.
Obrigado Motta!
Exatamente esta era a solução! Apenas com uma pequena alteração, THEN 0 ELSE 1 para determinar as posições corretas!
Obrigado de coração!
Faltou um DESC no ORDER BY , ou trocar a soma.
ORDER BY ( (CASE WHEN ds_answer1 = 'A' THEN 1 ELSE 0 END) +
(CASE WHEN ds_answer2 = 'A' THEN 1 ELSE 0 END) +
...
(CASE WHEN ds_answer10 = 'A' THEN 1 ELSE 0 END) )
Outra solução mais limpa seria criar uma coluna virtual que fizesse esta conta.