2013-08-05 62 views
0

我有一個問題,在SQL Server中的選擇,我有這個表有2列:條款ORDER BY

a 2 
b 1 
c 100 
d 1 
a 100 
b 1 
c 2 
d 1 

我想下令基於第一列,以這樣的方式

a 2 
a 100 
b 1 
b 1 
c 2 
c 100 
d 1 
d 1 

但則j想secondcolumn行= 100在底部進行移動,所以:

a 2 
b 1 
b 1 
c 2 
d 1 
d 1 
a 100 
c 100 

我有句序試圖通過COLUMN1 ASC,(COL umn2 = 100)ASC,但它沒有工作!

謝謝和問候。

+2

你可以嗎你試過的Select語句怎麼樣? –

+0

「100」是一些神奇的價值嗎? – SWeko

+0

不,不是魔術價值,但是是一個例子...... –

回答

1
SELECT * 
FROM table1 
ORDER BY 
CASE 
    WHEN col2>=100 THEN 1 
    ELSE 0 
END, 
col1, 
col2 

SQLFiddle Example

+0

這個查詢很好,正如我所料,坦克 –

2

使用CASE表達如下

SELECT * 
FROM tab 
ORDER BY CASE 
      WHEN column2 = 100 THEN 1 
      ELSE 0 
      END ASC, 
      column1 asc 
+0

Tankyou,我不知道ORDERBY子句中使用的關鍵字CASE的這種特殊用法。 –

+1

抱歉,BUR dont'work如我所料..in事實的結果是: b 1 b 1 的C 2 C 100 d 1 d 1 –

+0

@PierreMinesso葉氏,校正 – Parado

5

其實,你想用100排在第二欄移至底部第一,然後由第一列排序:

order by (case when col2 = 100 then 1 else 0 end), 
     col1 
+0

所以帕拉多回答了這個問題,你回答了理想的結果;) –