Sql union子句中的列名无效

Sql union子句中的列名无效,sql,sql-server,Sql,Sql Server,我试图使用union子句将固定值'ALLE'添加到我的列中,但出现错误: 无效的列名模式 在我的订购依据条款中 我该怎么做 SELECT 'ALLE' UNION SELECT BoltPattern FROM [OminiTire].[Data].[WheelData] WHERE BoltPattern IS NOT NULL GROUP BY BoltPattern ORDER BY CASE WHEN BoltPattern = 'ALLE'

我试图使用union子句将固定值
'ALLE'
添加到我的列中,但出现错误:

无效的列名模式

在我的订购依据条款中

我该怎么做

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

我建议使用子查询。和
联合所有

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
    会产生删除重复项的开销<代码>全部联合不起作用
  • 我发现
    SELECT DISTINCT
    比使用
    groupby
    更简洁
  • 子查询允许您定义显式排序——在我看来,它比复杂的
    CASE
    表达式更易于维护

我建议使用子查询。和
联合所有

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
    会产生删除重复项的开销<代码>全部联合不起作用
  • 我发现
    SELECT DISTINCT
    比使用
    groupby
    更简洁
  • 子查询允许您定义显式排序——在我看来,它比复杂的
    CASE
    表达式更易于维护

这里的期望结果是什么?这里的期望结果是什么?我倾向于选择CTE而不是像这样的子查询。。。更易于阅读和维护,性能完全相同。@pmbAustin。虽然这在SQL Server中是正确的,但并非在所有数据库中都是正确的。有些数据库更可能具体化CTE而不是子查询。我倾向于选择CTE而不是像这样的子查询。。。更易于阅读和维护,性能完全相同。@pmbAustin。虽然这在SQL Server中是正确的,但并非在所有数据库中都是正确的。有些数据库比子查询更可能具体化CTE。