몇 개의 열에 의해 순서대로 사례
-
18-09-2019 - |
문제
케이스 블록을 사용하여 SQL 2008 쿼리를 주문하는 방법을 선택해야합니다. [status] ASC, [date] DESC
아니면 그냥 [date] DESC
.
하나의 열을 사용하는 방법 만 알고 있습니다.
SELECT *
FROM table
ORDER BY
CASE WHEN @flag = 0
THEN R.[date] END DESC,
CASE WHEN @flag = 1
THEN R.[status] END ASC
두 번째 경우 두 열을 사용하는 방법은 무엇입니까?
해결책
- 깃발이 0이면 (null, r.date desc)로 주문할 것입니다.
- 그렇지 않다면 (R.Status, R.Date Desc)에 의해 주문할 것입니다.
사례 표현식을 사용하여 주문을위한 새로운 값을 "프로젝트"하십시오.
SELECT *
FROM table
ORDER BY
CASE WHEN @flag = 0 THEN r.Status ELSE null END,
r.[date] desc
다른 팁
일반적으로 조건부 주문을 입력하려면 사례 명령문을 반복합니다.
SELECT *
FROM table
ORDER BY
CASE WHEN @flag = 0 THEN R.[date] END DESC,
CASE WHEN @flag = 0 THEN R.[somethingelse] END ASC,
CASE WHEN @flag = 1 THEN R.[status] END ASC
;
그러나 귀하의 경우 '날짜'의 겹침은 David B의 의견처럼 단순화 할 수 있음을 의미합니다.
제휴하지 않습니다 StackOverflow