Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Possuo uma coluna de data.
Eu gostaria que os registros **com datas futuras aparecessem no topo **do meu select, em relação aos demais registros.
Em seguida, gostaria que somente esses registros com datas futuras ficassem em ordem crescente.
Algo como
João | 16/11/2023
Maria | 17/11/2023
José | 20/11/2023
-----------------------------
(demais registros da base)
Antônio | 20/05/2023
Rosa | 15/08/2023
Cida | 15/10/2022
Pedro | 20/05/2021
Paulo | 14/11/2020
O select seria esse.
select dbo.formataData(ET.dataInicial) AS 'data' FROM dbo.tab AS ET
GROUP BY ET.dataInicial>
11 horas atrás, Motta disse:
Algo como
Order by (case dataInicial > Getdate() then convert(varchar,dataInicial , 112) else nome end)
Ou seja se a data é maior que hoje ordena por ela senão pelo nome.
A conversão pois o CASE precisa retorma mesmos tipos e formada com ano,mês e dia permite ordernar.
Show de bola!
Ajustei e ficou perfeito como eu precisava @Motta
Muito obirgado!!
SELECT
ET.nomeEvento AS nome
, ET.dataInicial
FROM dbo.tab AS ET
ORDER BY
CASE WHEN ET.dataInicial > GETDATE() Then CONVERT(varchar,ET.dataInicial , 112) ELSE ET.nomeEvento END
Algo como
Order by (case dataInicial > Getdate() then convert(varchar,dataInicial , 112) else nome end)
Ou seja se a data é maior que hoje ordena por ela senão pelo nome.
A conversão pois o CASE precisa retorma mesmos tipos e formada com ano,mês e dia permite ordernar.