BY条件ORDER私はそれが条件をsatisfiess場合、それはたとえば、MS SQL:ASC/DESC質問
を降順で注文する必要がありますので、私のクエリで順序を条件付きにできるようにすることにしたい:
SELECT * FROM Data ORDER BY SortOrder CASE WHEN @Direction = 1 THEN DESC END
BY条件ORDER私はそれが条件をsatisfiess場合、それはたとえば、MS SQL:ASC/DESC質問
を降順で注文する必要がありますので、私のクエリで順序を条件付きにできるようにすることにしたい:
SELECT * FROM Data ORDER BY SortOrder CASE WHEN @Direction = 1 THEN DESC END
のようなものを行っている:
SELECT * FROM table
ORDER BY
CASE WHEN @Direction = 1 THEN -id else id END asc;
OP尋ねる:Guysは、私はSQLの専門家ではないよ
、それは順序の方向を制御ず、idと-idを意味するものを私に説明してください?
idは、並べ替える列だけです。 -idはそれを否定するだけです、id * -1。あなたが複数の列でソートしている場合は、各列を否定する必要があります:
SELECT * FROM table
ORDER BY
CASE WHEN @Direction = 1 THEN -id else id END
CASE WHEN @Direction = 1 THEN -othercolumn else othercolumn END ;
あなたが非数値カラムで注文している場合は、その列を作る表現を見つける必要があります"負";それを行う関数を書くことが役に立ちます。あなたはまた、すべての列タイプをサポートしていますスキーム使用することができます
SELECT *
FROM Data
ORDER BY
Case WHEN @Direction = 1 THEN SortOrder END DESC,
Case WHEN 1=1 THEN SortOrder END
:私はとにかく、あなたが書いたものを理解していない
SELECT <column_list> FROM <table> ORDER BY CASE WHEN @sort_order = 'ASC' AND @sort_column = '<column>' THEN <column> END ASC, CASE WHEN @sort_order = 'DESC' AND @sort_column = '<column>' THEN <column> END DESC
これは動作するようですが、私は 'asc'/'desc'が 'end'の後にどのように呼び出されるのか理解していませんか? – mulllhausen
@mulllhausen case文がfalseの場合、すべての行に対してNULLが返されるため、ソートの効果がなくなり、デフォルトで呼び出されます。 – Tsaukpaetra
Guys、私はSQLエキスパートではありません。idと-idを意味するものを説明してください。注文の方向を制御していますか? – Shimmy
また、私は私のクエリを編集しました、それを確認してください。 – Shimmy
だから私は実際にASCを書く必要はありません、そうですか? – Shimmy