我在两个表内使用并集所有函数。除一列外,两个表完全相同。
这是我的代码:
SELECT x.InventoryTransTempID
,x.InventoryTransID
FROM (
SELECT *
FROM InventoryTransTemp
UNION ALL
SELECT *
FROM InventoryTrans
) x
唯一不同的列是身份列。在第一个表中称为InventoryTransTempID,在第二个表中称为InventoryTransID。是否有任何方法可以通知sql server,如果列名是InventoryTrans,则将其重命名为InventoryTransTempID。
我的例外是:
无效的列名'InventoryTransID'。
发生此错误的原因是,当您在两列之间执行联合操作并尝试在一个列中获取输出时,列名就是上一个列名的名称,如下所示。
Select 'a' as column1
union all
Select 'b' as column2
输出将在这里
column1
-------
a
b
根据上述说明,column2
与column1
混合在一起,因此无法在外部查询中同时获得列名。
要检查列名,您应该首先检查内部查询的输出,如下所示。
select * from InventoryTransTemp union all select * from InventoryTrans