2016-12-03 2 views
0

SQL 테이블 주문에 대한 질문이 있습니다. 그리고 나는 스택이나 구글에서 해결책을 찾을 수 없다. 내 테이블 "점수"는 다음과 같습니다 :COALESCE를 결합한 2 열로 주문하는 방법은 무엇입니까?

Name Total Tries Game1 Game2 Game3 
------------------------------------------ 
Sam  65  61  10  31  24    
Tom    55  11   30 
Jim  65  58  9  34  22 
Dan  62  52  10  30  22 

참고 : "전체"열은 COUNT (게임 1 + 게임 2 + 게임 3)입니다.

Tom이 Game2를 재생하지 않았기 때문에 Tom의 Total 레코드가 비어 있습니다.

내가 (가장 높은 우선 순위가 가장 낮은) 다음과 같이 내 테이블을 주문하려는 :

  1. 빈 세포 (테이블의 맨 아래)
  2. 총 (ASC)
  3. 시도 횟수 (ASC)
  4. Name Total Tries Game1 Game2 Game3 
    ------------------------------------------ 
    Dan  62  52  10  30  22 
    Jim  65  58  9  34  22 
    Sam  65  61  10  31  24    
    Tom    55  11   30 
    
    :

그래서 내 테이블과 같이한다

어떤 SQL 쿼리를 사용해야합니까?

이 나는이 순간에 어떤이지만, 정렬에하지 않습니다는 "시도"

SELECT name, Game1+Game2+Game3 AS Total, Game1, Game2, Game3, Tries 
FROM Score 
ORDER BY CASE WHEN Tries or Game1 or Game2 or Game3 IS NULL THEN 0 ELSE 1 END DESC, 
     COALESCE(Game1,0) + COALESCE(Game2,1) + COALESCE(Game3,2) ASC 

답변

0

당신이 NULL 대신 Total에서 빈 의이 order byCASE 문에 따라이 고려. 이 Order by

ORDER BY COALESCE(Total,99999999999) ASC,Tries ASC 

99999999999NULL 값이 마지막에 정렬 할 수 있도록하고 다른 레코드를 오름차순으로

또는

ORDER BY case when Total is null then 0 else 1 end desc,Total ASC,Tries ASC 
+0

감사를 지시됩니다 시도, 그것을 작동합니다! – Maarten

관련 문제