NULL을 먼저 표시 한 다음 가장 최근 날짜를 보여주는 ORDER BY DATE
select 문을 실행하는 저장 프로 시저가 있습니다. 결과를 날짜 필드별로 정렬하고 NULL 날짜가있는 모든 레코드를 먼저 표시 한 다음 가장 최근 날짜를 표시하고 싶습니다.
문은 다음과 같습니다.
SELECT a,b,c,[Submission Date]
FROM someView
ORDER BY [Submission Date] ASC
이제 NULL 제출 날짜가있는 모든 레코드를 먼저 표시하지만 날짜 값이있는 행에 도달하면 뷰에서 가장 최근 날짜가 아닙니다.
ASC를 DESC로 바꾸면 원하는 순서대로 날짜를 얻지 만 NULL 값은 결과 집합의 맨 아래에 있습니다.
맨 위에 null 값을 표시 한 다음 날짜 값이있을 때 가장 최근에서 가장 오래된 것으로 내림차순으로 정렬 할 수 있도록 쿼리를 구조화하는 방법이 있습니까?
@Chris, 거의 다 가지고 있습니다.
ORDER BY (CASE WHEN [Submission Date] IS NULL THEN 1 ELSE 0 END) DESC,
[Submission Date] DESC
[편집 : #Eppz가 현재 표시된대로 위 코드를 수정 해달라고 요청했습니다.]
저는 개인적으로 "매직 넘버"를 만드는 것보다 이것을 더 선호합니다. 매직 넘버는 거의 항상 일어나기를 기다리는 문제입니다.
다음과 같이 NULL을 맨 아래에 놓을 수 있습니다.
ORDER BY [Submission Date] IS NULL DESC, [Submission Date] ASC
표준 SQL (ISO / IEC 9075-2 : 2003 이상-2008)은 다음을 제공합니다.
ORDER BY SomeColumn NULLS FIRST
대부분의 DBMS는 아직 AFAIK를 지원하지 않습니다.
시험
SELECT a,b,c,[Submission Date]
FROM someView
ORDER BY isnull([Submission Date],cast('2079/01/01' as datetime)) ASC
OrderBy="ColumnName = NULL desc, ColumnName desc"
이 시도
select a, b, c, [Submission Date] from someView ORDER BY isnull ([Submission Date], cast ( '1770/01/01'as datetime)) ASC
나는 이것이 오래되었다는 것을 알고 있지만, 그것을 발견했을 때 나는 수용된 솔루션 인 https://stackoverflow.com/a/821856/7177892 , CASE 문의 결과를 오늘 (GETDATE ()) 또는 실제 날짜.
실물:
ORDER BY (CASE WHEN [Submission Date] IS NULL THEN 1 ELSE 0 END) DESC,
[Submission Date] DESC
쉽게 한:
ORDER BY (CASE WHEN [Submission Date] IS NULL
THEN GETDATE()
ELSE [Submission Date]
END) DESC
다른 모든 것보다 간단 할 수있는 또 다른 제안이 있습니다.
SQL Server의 경우 경우를 제외하고 대부분의 옵션이 작동하지 않습니다.
나는 이것이 실제로 나에게 잘 작동한다는 것을 알았습니다 .ORDER BY ISNULL (Submission_Date, GETDATE ()) DESC
쿼리의 순서 비트에서 GETDATE () 값을 null 인 Submittion_Date 값에 할당하면 순서가 올바르게 나옵니다.
참고 URL : https://stackoverflow.com/questions/821798/order-by-date-showing-nulls-first-then-most-recent-dates
'Program Tip' 카테고리의 다른 글
인증없이 Swagger URL에 액세스 할 수 있도록 Spring Security를 구성하는 방법 (0) | 2020.12.10 |
---|---|
Oracle에서보기 란 무엇입니까? (0) | 2020.12.10 |
& to & etc로 변환 (0) | 2020.12.10 |
C에서 참과 거짓 사용 (0) | 2020.12.10 |
쉼표가있는 숫자를 소수점으로 부동 소수점으로 변환 (0) | 2020.12.10 |