2017-03-23 5 views
5

나는 NULL이있는 날짜 열이 있습니다. ASC 날짜 열에 따라 주문하고 싶지만 하단에 NULL이 필요합니다. 어떻게해야합니까? TSQL?TSQL ORDER BY는 처음 또는 마지막으로 (하단 또는 상단에)

order by col asc nulls first 
order by col asc nulls last 
order by col desc nulls first 
order by col desc nulls last 

을하지만, T-SQL은 여기에 표준을 준수하지 않는 :

+0

의 사용 가능한 복제 [날짜와 널 (null) BY SQL 서버 ORDER 마지막] (HTTP : // 유래 그 문제에 대한 문자열) 먼저 정렬해야한다 그렇게는/당신의 열을 기준으로 만 다음 널 (null)과 널이 .com/questions/5886 857/sql-server-order-by-date-and-nulls-last) – HABO

답변

2
Select * 
From YourTable 
Order By case when DateCol is null then 1 else 0 end 
     ,DateCol 

또는 표준 SQL에서는 심지어 Order By IsNull(DateCol,'2525-12-31')

+1

"2525 년에 사람이 아직 살아 있다면?" –

+0

@ZoharPeled 마침내! 누군가가 그것을 가지고 –

+0

나는이 오래된 노래를 사랑합니다 ... –

12

당신은 널 (null)을 넣어 위치를 지정할 수 있습니다. 널 (NULL)의 순서는 오름차순 정렬 또는 T-SQL에서 하강 여부에 따라 달라집니다 : 정수와

order by col asc -- implies nulls first 
order by col desc -- implies nulls last 

그럴 수 단순히 정렬 네거티브로 :

order by -col asc -- sorts by +col desc, implies nulls first 
order by -col desc -- sorts by +col asc, implies nulls last 

그러나이 날짜 불가능 (또는

order by case when col is null then 1 else 2 end, col asc|desc -- i.e. nulls first 
order by case when col is null then 2 else 1 end, col asc|desc -- i.e. nulls last 
+0

+1 TSQL 차이 대 표준을 부르는 +1. SQL Server가 Null 값을 가능한 한 가장 낮은 값으로 처리하기 때문에 'order by col asc'가 먼저 null을 제공하고 'order by col desc'는 마지막으로 null을 제공합니다. [SELECT - ORDER BY Clause] (https://docs.microsoft.com/)를 참조하십시오. en-us/sql/t-sql/queries/select-order-by-clause-transact-sql) – HappyTown