2016-11-14 20 views
0

我有這個示例代碼,我嘗試運行。只有他的表名和列名改變了。我想要做的是有一個狀態結果集,並且'NULL'是第一個值,結果的其餘部分按照升序顯示在'NULL'下面,我不能爲了我的生活使它工作。我得到底部的錯誤。這可能是一個非常「不好」的問題,但任何人都可以幫忙嗎?非常感謝大家!ORDER BY CASE WHEN: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

我需要更新我的答案,爲什麼你需要查詢中的聯合空值? –

相關問題