Python PandasConcatenateと同等のT-SQL

Oct 24 2020

Python PandasConcatenateと同様の方法でマージしたいテーブルがいくつかあります。情報がかなり大きいので、情報を複製したくありません。似たVIEWような行動をしたいのですが。私の知る限りではうまくいかないが、私が達成したいことを適切に説明するために、偽の例で説明させてください。

次の2つのテーブルがあるとしましょう。

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

a, b, c同等ですが、異なるデータを保持する場所。dに存在するtable_1がに存在せず、table_2にe存在するtable_2がに存在しないtable_1。

テーブルには一般的なデータは含まれていません。つまり、JOINどのフィールドでも、結果はゼロになります。

私は次のことを実行できるようにしたいと思います(または同等の何か。私が示していることは実行できないことを知っています):

CREATE VIEW MyUnion FROM(
SELECT * FROM table_1 UNION SELECT * FROM table_2) AS alldata;

私が実行した場合:

SELECT * FROM MyUnion;

そして、のようなものになるだろう(1とOneちょうどフィラー一般的な数値や文字列を表しています):

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

データを複製せずにこのようなことをする方法はありますか?(つまり、すべてを保持する別のテーブルを作成する)

ありがとうございました!

回答

7 ypercubeᵀᴹ Oct 23 2020 at 22:35

このようなもの?:

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 ;