結果セットの注文方法に関するルールがあります。私はCASEを使って列を注文して注文する必要があります。注文書にCASEを使用する
ORDER BY
CASE
WHEN ISNULL(actual_appearance_date, scheduled_appearance_date) IS NOT NULL AND icbm.emma_id IS NOT NULL -- We have it all!
THEN ISNULL(actual_appearance_date, scheduled_appearance_date) DESC , icbm.emma_id , version_number , icaci_t.[ijis_court_appearance_court_item_tracker_id]
WHEN ISNULL(actual_appearance_date, scheduled_appearance_date) IS NOT NULL AND icbm.emma_id IS NULL -- We have an appearance date, but it's manual.
THEN ISNULL(actual_appearance_date, scheduled_appearance_date) DESC, icaci_t.[ijis_court_appearance_court_item_tracker_id] DESC
WHEN ISNULL(actual_appearance_date, scheduled_appearance_date) IS NULL AND icbm.emma_id IS NOT NULL -- No appearance date, but it has a Business Message
THEN icbm.emma_id DESC, version_number DESC, icaci_t.[ijis_court_appearance_court_item_tracker_id] DESC
ELSE icaci_t.[ijis_court_appearance_court_item_tracker_id] DESC -- No Appearance date, not Message.
END
をしかし、私だけTHEN後の列を含めることができそうです。
は、私はこれをしようとしています。しかし私は、私のルールに基づいていくつかの列を使用する必要があります。
これを行う方法はありますか?
ご注文のないサブクエリの選択されたカスケードでこの醜いコードを使用して、親クエリの1つの列で注文することができます –
@Andrey:しかし、各THENは複数のものを注文して返します。私はあなたが同じ条件(あなたが並べ替えたい各コンポーネントに1つ)で4つのケースが必要だと思う。 SQL Serverが配列をサポートしていて、それらを分別してソートすれば、CASEの各ブランチから配列を返すことができます(PostgreSQLはこの種のチキャンタリーをサポートすると思いますが、SQL Serverについてはわかりません)。 –
@muが短すぎます:T-SQLでは配列がありません。 –