union子句中的列名无效

时间:2017-10-11 21:09:46

标签: sql sql-server

我正在尝试使用union子句向我的列添加固定值'ALLE',但是我收到错误:

  

无效的列名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

1 个答案:

答案 0 :(得分: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表达式更容易维护(在我看来)。