Sql server 无法使用where子句应用union

Sql server 无法使用where子句应用union,sql-server,tsql,Sql Server,Tsql,我试图用这些查询将默认值Choose a Restaurant添加到我的查询结果中 SELECT * FROM( SELECT No_,Name + ' - ' + No_ Name FROM [dbo].[TestDB] UNION SELECT '<Choose a Restaurant>' AS Name) A WHERE [Alt Grup] = 'TAB' or [Alt Grup] = 'FRC' or [Alt Grup] = 'KIB' or [Alt Grup] =

我试图用这些查询将默认值Choose a Restaurant添加到我的查询结果中

SELECT * FROM(
SELECT No_,Name + ' - ' + No_ Name FROM [dbo].[TestDB]
UNION
SELECT '<Choose a Restaurant>' AS Name) A
WHERE [Alt Grup] = 'TAB' or [Alt Grup] = 'FRC' or [Alt Grup] = 'KIB' or [Alt Grup] = 'ORK')
       and (Blocked = 0)
       and ([Chain Name] = '01-TAB' or [Chain Name] = 'YURT DIŞI' or [Chain Name] = 'FAS')
       and [Show On Web] = 1
       and No_ != '2001.10.01.000998'
ORDER BY Name

您在first select中有一个错误的列名序列,似乎有两列,但 没有名字好像错了

  No_, Name + ' - ' + No_ Name FROM [dbo].[TestDB]
对于联合,您需要在两个select中使用相同的编号和相应的数据类型列,以便可以尝试

SELECT * 
FROM(
  SELECT 'No_' + Name + ' - ' + No_ + Name AS name
  FROM [dbo].[TestDB] 
  UNION
  SELECT '<Choose a Restaurant>' 
) A

ORDER BY Name
在WHERE子句中,可以只使用表子查询A中存在的列名 你有
所以您只能筛选名称的值

您的查询有几个问题。我会按照这些思路将其重组

SELECT No_
    , Name + ' - ' + No_ Name 
FROM [dbo].[TestDB]
WHERE [Alt Grup] in ('TAB', 'FRC', 'KIB', 'ORK')
    and Blocked = 0
    and [Chain Name] in ('01-TAB', 'YURT DIŞI', 'FAS')
    and [Show On Web] = 1
    and No_ != '2001.10.01.000998'

UNION ALL

SELECT NULL
    , '<Choose a Restaurant>' AS Name
ORDER BY Name

您可以共享您的输入和所需的输出吗?您的where子句位于错误的查询上。此外,您还将遇到另一个问题,因为默认行的列数将不相同。当您发布有关错误的问题时,发布错误消息将非常有益,而不是错误消息不成功。请选择“否”作为名称,并且您的WHERE子句在FROM中没有列。@SeanLange,我现在无法生成错误,我使用的是SQL Reporting Service,我只认为错误语法是错误的。因此,如果出现这种情况,请执行查询并在SSMS中运行它。这不会起作用,因为where谓词中的列在派生表中不存在。查询可以工作,但不会添加到查询结果中。嗯……是的,确实如此。这是工会的第二个问题;也许你需要用No_u列来切换它?但很高兴它对你有用。
SELECT No_
    , Name + ' - ' + No_ Name 
FROM [dbo].[TestDB]
WHERE [Alt Grup] in ('TAB', 'FRC', 'KIB', 'ORK')
    and Blocked = 0
    and [Chain Name] in ('01-TAB', 'YURT DIŞI', 'FAS')
    and [Show On Web] = 1
    and No_ != '2001.10.01.000998'

UNION ALL

SELECT NULL
    , '<Choose a Restaurant>' AS Name
ORDER BY Name