2012-02-21 20 views
1

私は2つのフィールドで整列しようとしているテーブルがあります。その1つは大文字で変更したいテーブルです。製品カテゴリ、ステータスが一定の値を持つまでは、正常に動作状況カスタムorderby SQL 2008

BY無効= '0' ORDER FROM

SELECT *。ステータスはXMLから直接得られ、実際には変更できません。価値観がわからない私たちが知っていることは、特定の順序で必要な3つの特定の条件があり、残りがステータスによって昇順に並べられていることです。彼らは異なる値を運ぶため

when status='1' we want it to be 1st; 
when status='D' we want it to be 2nd 
when status='2' we want it to be 3rd 

状況により、その後、残りのオーダー..

サンプル出力:

category | status 
electronic | 1 
electronic | D 
electronic | 2 
electronic | 9 
misc | 1 
misc | 2 
misc | 8 
+0

私はそれらすべてを読んが、どれもマッチしていません正確に以下の答えに。 –

答えて

4

はこれを試してみてください:

SELECT * 
FROM products 
WHERE disabled='0' 
ORDER BY category, 
     CASE WHEN status = '1' THEN 1 
     WHEN status = 'D' THEN 2 
     WHEN status = '2' THEN 3 
     ELSE 4 END, status 
+0

私は、最後に状態を失っていた..ありがとう:) –