SQL Server Union全部带有一个不同的列

问题描述 投票:0回答:1

我在两个表内使用并集所有函数。除一列外,两个表完全相同。

这是我的代码:

SELECT x.InventoryTransTempID
    ,x.InventoryTransID
FROM (
    SELECT *
    FROM InventoryTransTemp

    UNION ALL

    SELECT *
    FROM InventoryTrans
    ) x    

唯一不同的列是身份列。在第一个表中称为InventoryTransTempID,在第二个表中称为InventoryTransID。是否有任何方法可以通知sql server,如果列名是InventoryTrans,则将其重命名为InventoryTransTempID。

我的例外是:

无效的列名'InventoryTransID'。

sql-server sql-server-2014
1个回答
1
投票

发生此错误的原因是,当您在两列之间执行联合操作并尝试在一个列中获取输出时,列名就是上一个列名的名称,如下所示。

Select 'a' as column1
union all
Select 'b' as column2

输出将在这里

column1
-------
a
b

根据上述说明,column2column1混合在一起,因此无法在外部查询中同时获得列名。

要检查列名,您应该首先检查内部查询的输出,如下所示。

select * from InventoryTransTemp union all select * from InventoryTrans
© www.soinside.com 2019 - 2024. All rights reserved.