T-SQL equivalente a Python Pandas Concatenate

Oct 24 2020

Tengo algunas tablas que me gustaría fusionar de forma similar a como lo hace Python Pandas Concatenate . No quiero replicar la información porque es bastante grande. Me gustaría tener un VIEWcomportamiento similar. Permítanme ilustrar con un ejemplo falso que, hasta donde yo sé, no funcionaría, pero solo para explicar adecuadamente lo que me gustaría lograr.

Digamos que tengo estas dos tablas:

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

Donde a, b, cson equivalentes pero contienen datos diferentes. dexiste en table_1pero no en table_2y eexiste en table_2pero no en table_1.

Las tablas no contienen datos comunes. Es decir, JOINen cualquier campo no obtendría ningún resultado.

Me gustaría poder hacer lo siguiente (o algo equivalente. Sé que lo que estoy mostrando no es factible):

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

De tal manera que si corro:

SELECT * FROM MyUnion;

Y obtendría algo como ( 1y Oneson solo un relleno que representa un número genérico o una cadena):

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

¿Hay alguna forma de hacer algo como esto sin duplicar los datos? (es decir, crear otra mesa que contenga todo)

¡Gracias!

Respuestas

7 ypercubeᵀᴹ Oct 23 2020 at 22:35

¿Algo como esto?:

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 ;