2016-12-03 30 views
0

我有一個關於訂購SQL表的問題。我無法在堆棧或谷歌上找到解決方案。我的表格「Score」如下:如何按2列合併COALESCE?

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 

注意:「Total」列是COUNT(Game1 + Game2 + Game3)。

正如你所看到的湯姆的總記錄是空的,因爲湯姆沒有玩遊戲2。

我要訂購我的表,如下所示(最低的最高優先級):

  1. 空單元格(在表格底部)
  2. 總(ASC)
  3. 嘗試次數(ASC)

所以我的表有看起來像:

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

考慮到你有TotalNULL,而不是根據您order byCASE聲明。試試這個Order by

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

99999999999將使NULL值在年底進行排序和其他記錄將在升序排列

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

謝謝,它的工作原理! – Maarten