🧠 Explicação

O comando ORDER BY é utilizado em instruções SQL para ordenar as linhas retornadas por uma consulta. Ele define a ordem de apresentação dos registros na tabela de resultados, podendo ser crescente (ASC) ou decrescente (DESC).

Se nenhuma direção for informada, o padrão é crescente. Também é possível definir se os valores NULL devem aparecer primeiro (NULLS FIRST) ou por último (NULLS LAST).

🔧 Usos mais comuns

  • Organizar os resultados por um ou mais campos.

  • Listar dados de forma ordenada para facilitar leitura e análise.

  • Aplicar ordenações múltiplas (por exemplo: ordenar por nome e depois por data).

  • Controlar a posição de valores nulos no resultado.

🧾 Sintaxe

SELECT coluna1, coluna2, ...
FROM nome_tabela
ORDER BY coluna1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
         coluna2 [ASC | DESC], ...;

📌 Regras

  • Você pode ordenar por qualquer coluna da seleção, inclusive por expressões.

  • Também é possível ordenar pelas posições das colunas, usando inteiros:
    ORDER BY 1 ordena pela primeira coluna selecionada.

  • Não é permitido ordenar por colunas de tipos como CLOB, BLOB, XML ou tipos estruturados.

  • Quando há colunas com o mesmo valor, a ordem desses registros é arbitrária (não garantida).

  • Pode-se ordenar por colunas apelidadas com AS, desde que o nome seja usado no ORDER BY.

💻 Exemplo prático

SELECT empnome, empsala
FROM emp
ORDER BY empnome ASC;

Esse exemplo lista os nomes e salários dos empregados em ordem alfabética crescente de nome.

🔀 Exemplo com múltiplas ordenações

SELECT empnome, empsala, empserv
FROM emp
ORDER BY empserv ASC, empsala DESC;

Primeiro ordena por função (empserv), depois por salário (empsala) em ordem decrescente dentro de cada função.

❗ Exemplo com tratamento de valores nulos

SELECT empnome, empcomi
FROM emp
ORDER BY empcomi DESC NULLS LAST;

Ordena os empregados pela comissão de forma decrescente, deixando os valores nulos por último.

📎 Dicas

  • Use ORDER BY coluna DESC para exibir os maiores valores primeiro.

  • Combine ORDER BY com DISTINCT com cautela — nem toda coluna pode ser usada.

  • Ao ordenar por expressões (ex: empsala * 2), utilize o número da coluna na ordem:

SELECT empnome, empsala * 2
FROM emp
ORDER BY 2;

⚠️ Condições que podem ocorrer

  • INVREQ: uso inválido da cláusula (ex: tentar ordenar por um tipo não permitido).

  • LENGERR: erro de comprimento em expressões de ordenação.

  • Outros erros podem ocorrer dependendo da subconsulta ou do contexto.

 

✅ Conclusão

A cláusula ORDER BY é essencial para organizar a apresentação dos dados em consultas SQL. Ela oferece flexibilidade para múltiplas ordenações, definição da posição de valores nulos e uso de colunas por posição ou nome. Saber usá-la bem é fundamental para produzir relatórios legíveis e bem organizados em ambientes DB2.