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
这里根据上面的语句column2
和column1
混合在一起,所以你不能在外查询中同时获取到这两个列名。
要检查列名,您应该首先检查内部查询的输出,如下所示。
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
。
如果您在第一个查询中使用别名,则可以更改名称。
我在两个 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
这里根据上面的语句column2
和column1
混合在一起,所以你不能在外查询中同时获取到这两个列名。
要检查列名,您应该首先检查内部查询的输出,如下所示。
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
。
如果您在第一个查询中使用别名,则可以更改名称。