Funções Lógicas GREATEST e LEAST no SQL Server 2022: Comparações Mais Simples e Poderosas


Com o SQL Server 2022 (versão 16.x), os desenvolvedores e DBAs ganharam dois novos aliados para escrever consultas mais limpas e eficientes: as funções GREATEST e LEAST. Essas funções, comuns em outros SGBDs como Oracle e PostgreSQL, agora estão disponíveis nativamente no SQL Server — e facilitam bastante comparações de múltiplos valores.

Neste post, você vai entender como essas funções funcionam, ver exemplos práticos e conferir dicas úteis para utilizá-las no seu dia a dia.


O que são as funções GREATEST e LEAST?

  • GREATEST retorna o maior valor entre dois ou mais argumentos.
  • LEAST retorna o menor valor entre dois ou mais argumentos.

Ambas funções comparam os argumentos fornecidos e retornam um único valor escalar com base na lógica de comparação padrão do SQL Server.


Requisitos

Essas funções estão disponíveis a partir do SQL Server 2022 (16.x) e exigem nível de compatibilidade 160 ou superior.


Sintaxe

GREATEST ( expression [ ,...n ] )
LEAST ( expression [ ,...n ] )
  • expression: Pode ser uma constante, uma coluna, uma variável ou qualquer expressão válida. Deve haver pelo menos dois argumentos.
  • Todos os argumentos devem ser do mesmo tipo de dados ou implicitamente conversíveis.

Exemplos

Retornar o maior valor entre três colunas

SELECT Nome, GREATEST(Nota1, Nota2, Nota3) AS MaiorNota FROM Alunos;

Retornar o menor valor entre três datas

SELECT IDPedido, LEAST(DataPedido, DataPagamento, DataEntrega) AS DataMaisAntiga
FROM Pedidos;

Casos de Uso Comuns

  • Comparar múltiplos preços de diferentes fornecedores e selecionar o menor (com LEAST).
  • Calcular a maior nota de avaliação entre várias provas (com GREATEST).
  • Verificar qual data veio primeiro em um fluxo de processos.
  • Construir regras de negócio como limites máximos ou mínimos em decisões condicionais (CASE, IF, etc).

Como era antes do SQL Server 2022?

Antes, você precisava usar funções CASE para simular esse comportamento:

-- Simulando GREATEST
SELECT
CASE
WHEN Nota1 >= Nota2 AND Nota1 >= Nota3 THEN Nota1
WHEN Nota2 >= Nota3 THEN Nota2
ELSE Nota3
END AS MaiorNota
FROM Alunos;

Esse código era mais difícil de manter. mas com GREATEST e LEAST, esse tipo de lógica se torna muito mais legível e direta.


Testando no SSMS

Você pode experimentar a função rapidamente com algo assim:

SELECT 
GREATEST(100, 200, 50) AS Maior,
LEAST(100, 200, 50) AS Menor;

Resultado:

MaiorMenor
20050


Conclusão

As funções GREATEST e LEAST vieram para facilitar a vida no SQL Server 2022. Com elas, você escreve menos código, com mais clareza e maior eficiência. Se você ainda está usando CASE para esse tipo de comparação, é hora de dar uma chance a essas novidades.

Já começou a usar essas funções no seu dia a dia? Compartilhe suas experiências ou dúvidas nos comentários!


Deixe um comentário