2016-11-14 5 views
0

私が実行しようとしているもののこのコード例があります。テーブル名とカラム名のみが変更されました。私がしたいことは状態の結果セットを持っていて、最初の値が 'NULL'で、結果の残りが 'NULL'の下に昇順で表示され、私の人生はそれを動作させることができません。私は一番下のエラーを取得します。これは非常に "ノービス"の質問かもしれませんが、誰でも助けることができますか?みんなに感謝します!ORDER BY CASEの場合:ORDER BY項目が選択リストに表示されている必要があります

SELECT DISTINCT 
    State 
FROM TABLE1 (NOLOCK) 
WHERE COLUMN1 NOT LIKE '%THAT%' 
    AND COLUMN1 NOT LIKE '%THIS%' 
UNION 
SELECT 'NULL' 
ORDER BY (CASE WHEN State = 'NULL' THEN 0 
      ELSE 1 
     END); 

エラーメッセージ:

ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator. 
+0

rdbmsに通知する必要があります。 – McNets

答えて

0

あなたは後でそれを使用しない場合でも、によって順序は、選択中に存在することが、それを必要とする...その列を選択する必要があります。

SELECT DISTINCT 
    State, 
CASE WHEN State = 'NULL' THEN 0 
      ELSE 1 END orderId 
FROM TABLE1 (NOLOCK) 
WHERE COLUMN1 NOT LIKE '%THAT%' 
    AND COLUMN1 NOT LIKE '%THIS%' 
ORDER BY (CASE WHEN State = 'NULL' THEN 0 
      ELSE 1 
     END); 
+0

これを追加すると、次のエラーが表示されます。 –

+0

UNION、INTERSECTまたはEXCEPT演算子を使用して結合されたすべてのクエリは、ターゲットリストに同じ数の式を持つ必要があります。 –

+0

私の答えを更新する必要があります。なぜあなたのクエリにunion nullが必要ですか? –

関連する問題