2017-11-18 9 views
1

一時的な列呼び出しRowNumを追加したい(取得に成功しました)。 しかし、私の問題は、私のデータが注文されるようにすることです>または<私の列 'Moyenne'の最後に0の値を入れてください。 RowNumでテーブルの注文をしたいので、最後のORDER BYに書き込むことはできません。ここで0の値を持つORDER BYの順序が異なっています

 SELECT 
     (SELECT COUNT(*) FROM orieps AS t2 
    WHERE (t2.Nbparcours > t1.Nbparcours) 
    OR (t2.Nbparcours = t1.Nbparcours AND t2.Nberreurs < t1.Nberreurs ) 
    OR (t2.Nbparcours = t1.Nbparcours AND t2.Nberreurs = t1.Nberreurs AND t2.Moyenne < t1.Moyenne )) +1 
AS rowNum, Nom, Nbparcours, Nberreurs, Moyenne, Total , P1, P2, P3, P4, P5 
FROM orieps t1 
    ORDER BY RowNum ASC 

私のテーブルoriepsです:

Nbparcours|Nberreurs|Moyenne 
     1 | 1 | 0 
     1 | 1 | 3.5 
     2 | 1 | 3 

そして、これは私が欲しいものである:等しい場合は、Nbparcoursによって

ROwNum|Nbparcours|Nberreurs|Moyenne 
    1 | 2  | 1 | 3 
    2 | 1  | 1 | 3.5 
    3 | 1  | 1 | 0 

まず注文、Nberreursによって順序がによって等しく順番場合Moyenneが最後に0です。

答えて

0

値が大きい場合は、値0を動作させます。

だから、別の値に0をマッピングするためにCASE expression sの

... AND t2.Moyenne < t1.Moyenne 

を置き換える:

... AND CASE t2.Moyenne WHEN 0 THEN 'last' ELSE t2.Moyenne END 
     < CASE t1.Moyenne WHEN 0 THEN 'last' ELSE t1.Moyenne END 

(SQLiteのでは、数字は任意の文字列よりも小さい比較。)

+0

あなたは天才です!!ありがとう!!私はケースについて知りませんでした(私はSqliteの初心者です)。それはとてもうまく動作します!再度、感謝します –

関連する問題