sql-server - 联合/联合所有查询中的别名 - SQL Server

标签 sql-server tsql

我有一个简单的 sql 语句如下

案例 1:

select 1 as a 
union  
select 2 as a

输出:这个案例按预期工作

enter image description here

案例 2:
select 1 as a 
union  
select 2 as b

输出:虽然在我的第二个选择中别名是“b”,但它仍然显示别名“a”。

为什么不能从第二个 select 语句中取别名?

我们如何让 sql 从第二个选择查询中选择别名?

enter image description here

案例 3:
select 1 
union  
select 2 as b

输出:即使我上面的第一个 select 语句没有任何别名,但第二个仍然有,为什么结果仍然显示“无列名”?

enter image description here

最佳答案

您可以将所有内容包装在一个 SELECT 周围,并使用您想要的别名为该列添加别名。

select a as [b] -- just alias it here with whatever you want
from (
    select 1 as a 
    union  
    select 2 as b
    ...) result_set

但正如@Will 所说,就是这样,无法改变。

或:

只需确保在顶部使用带有所需“别名”的查询,并将 UNION 与包含其他查询/值的单个 SELECT 语句一起使用。
select 2 as b

union

select a
from (
    select 1 as a
    union
    select 3 as c
    union
    ... ) result_set

关于sql-server - 联合/联合所有查询中的别名 - SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42491081/

相关文章:

c# - 使用 C# 调用带参数的 SQL Server 存储过程

c# - 如何创建动态数据库连接字符串C#

tsql - 查找过去一小时内产生的记录

sql-server - SQL Server 2005 - 比较 char 列与 int

sql-server - 如何选择 * 并按字母顺序获取所有字段

sql-server - 如何从 Azure VM 上的 SQL Server Blob 存储中删除数据磁盘

c# - 如何使用 EntityFramework 7 和 Asp.Net 5 调用 SQL 存储过程

sql-server - T-SQL : sp_MSdependencies Flags parameter

sql - SQL Server 中 session 和连接的区别

sql - 为什么在 Crystal 报表中使用beforereadingrecords/whilereadingrecords/whileprintingrecords?