🧠 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.