SQL Server Union All 有一个不同的列

SQL Server Union All with one different column

我在两个 table 中使用 union all 函数。两个 table 除一列外完全相同。

这是我的代码:

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

    UNION ALL

    SELECT *
    FROM InventoryTrans
    ) x    

唯一不同的列是标识列。在第一个 table 中称为 InventoryTransTempID,在第二个中称为 InventoryTransID。有没有什么方法可以通知 sql 服务器,如果列名是 InventoryTrans,只是将其重命名为 InventoryTransTempID。

我的例外是:

Invalid column name 'InventoryTransID'.

发生此错误是因为当您在两列之间执行并集运算并尝试在一列中获取输出时,列名是上一列名的名称,如下所示。

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

输出会在这里

column1
-------
a
b

这里根据上面的语句column2column1混合在一起,所以你不能在外查询中同时获取到这两个列名。

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

select * from InventoryTransTemp union all select * from InventoryTrans

UNION ALL 的结果是两个表中的所有行,列名取自联合查询的第一个查询。
所以你不能在结果中同时包含两个列名。
在此查询中:

select * from InventoryTransTemp
union all 
select * from InventoryTrans

列的名称将是 InventoryTransTempID
在这个查询中:

select * from InventoryTrans
union all 
select * from InventoryTransTemp

列的名称将是 InventoryTrans
如果您在第一个查询中使用别名,则可以更改名称。