T-SQL 等价于 Python Pandas Concatenate

Wil*_*mar 3 sql-server t-sql view union

我有几个表,我想以与Python Pandas Concatenate类似的方式合并。我不想复制信息,因为它相当大。我想有一个VIEW喜欢的行为。让我用一个假的例子来说明,据我所知是行不通的,只是为了正确解释我想要实现的目标。

假设我有这两个表:

CREATE TABLE table_1 (
    [a] [bigint] NOT NULL,
    [b] [bigint] NOT NULL,
    [c] [varchar] (32) NULL,
    [d] [bigint] NULL,
)
GO

CREATE TABLE table_2 (
    [a] [bigint] NOT NULL,
    [b] [bigint] NOT NULL,
    [c] [varchar] (32) NULL,
    [e] [varchar](256) NULL,
)
GO
Run Code Online (Sandbox Code Playgroud)

哪里a, b, c是等价的,但保存不同的数据。 d存在于table_1但不存在table_2e存在于table_2但不存在table_1

表不保存任何公共数据。也就是说,JOIN任何字段上的 a 都会带来零结果。

我希望能够执行以下操作(或等效的操作。我知道我所展示的内容不可行):

CREATE VIEW MyUnion FROM(
SELECT * FROM table_1 UNION SELECT * FROM table_2) AS alldata;
Run Code Online (Sandbox Code Playgroud)

这样,如果我运行:

SELECT * FROM MyUnion;
Run Code Online (Sandbox Code Playgroud)

并且会得到类似(1并且One只是表示通用数字或字符串的填充符):

a       b       c       d       e
1       1       One     1       NULL
1       1       One     NULL    One

Run Code Online (Sandbox Code Playgroud)

有没有办法在不复制数据的情况下做这样的事情?(即创建另一个包含所有内容的表)

谢谢!

ype*_*eᵀᴹ 7

像这样的东西?:

CREATE VIEW MyUnion AS
SELECT
    a, b, c,
    d,
    CAST(NULL AS varchar(32)) AS e 
FROM table_1 
UNION ALL
SELECT
    a, b, c, 
    CAST(NULL AS bigint) AS d,
    e
FROM table_2 ;
Run Code Online (Sandbox Code Playgroud)