2017-10-11 145 views
0

我想爲一個固定值'ALLE'添加到我的工會條款列,但我得到一個錯誤:無效列名稱

Invalid column name BoltPattern

order by條款

究竟是如何做我這樣做?

SELECT 'ALLE' 
UNION 
SELECT BoltPattern 
FROM [OminiTire].[Data].[WheelData] 
WHERE BoltPattern IS NOT NULL 
GROUP BY BoltPattern 
ORDER BY 
    CASE 
     WHEN BoltPattern = 'ALLE' 
      THEN 1 
     ELSE 2 
    END, BoltPattern 
+0

這裏的結果是什麼? – maSTAShuFu

回答

2

我推薦使用子查詢。 。 。和union all

SELECT BoltPattern 
FROM ((SELECT 'ALLE' as BoltPattern, 1 as ord) 
     UNION ALL 
     (SELECT DISTINCT BoltPattern, 2 as ord 
     FROM [OminiTire].[Data].[WheelData] 
     WHERE BoltPattern is not null 
    ) 
    ) x 
ORDER BY ord, BoltPattern; 

注:

  • UNION招致開銷,刪除重複。 UNION ALL不。
  • 我發現SELECT DISTINCT比使用GROUP BY更簡潔。
  • 子查詢允許您定義明確的排序 - 比較複雜的CASE表達式更易於維護(在我看來)。
+0

我傾向於喜歡CTE而不是像這樣的子查詢...更容易閱讀和維護,完全相同的性能。 – pmbAustin

+0

@pmbAustin。 。 。雖然在SQL Server中這是真的,但在所有數據庫中都不是這樣。一些數據庫比子查詢更有可能實現CTE。 –