1
resposta

CASE WHEN COM DATA

Professor , como senhor usarida um case when com data?

exemplo: To rodando um select que puxa ano e mes, porém quando vou ordernar ele traz 2023 primeiro e não 2022

1 resposta

Olá, Felipe, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

Para ordenar datas de forma ascendente em uma query SQL utilizando CASE WHEN, você pode usar a seguinte sintaxe:

SELECT *
FROM sua_tabela
ORDER BY 
  CASE 
    WHEN data_coluna IS NULL THEN 1 --se a data for nula, ordena no final
    ELSE 0 --caso contrário, ordena normalmente
  END,
  data_coluna ASC;
  • Na primeira linha dentro do ORDER BY, o CASE WHEN é usado para verificar se a data na coluna é nula. Se for nula, então retorna 1, caso contrário retorna 0.
  • Na segunda linha dentro do ORDER BY, a coluna de data é ordenada em ordem ascendente, ou seja, da data mais antiga para a mais recente.
  • A ordenação primeiro ocorre com os resultados do CASE WHEN, então, as datas que são nulas serão ordenadas por último.

Utilizando a tabela notas_fiscais utilizada no curso, a consulta ficaria assim:

SELECT *
FROM notas_fiscais
ORDER BY 
  CASE 
    WHEN data_venda IS NULL THEN 1 
    ELSE 0 
  END,
  data_venda ASC;

Espero ter ajudado.

Caso surja alguma dúvida, fico à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.