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?
GREATESTretorna o maior valor entre dois ou mais argumentos.LEASTretorna 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:
| Maior | Menor |
|---|---|
| 200 | 50 |
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!