T-SQL เทียบเท่ากับ Python Pandas Concatenate
ฉันมีสองสามตารางที่ฉันต้องการรวมในลักษณะเดียวกับที่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
ที่ไหนa, b, cเทียบเท่า แต่เก็บข้อมูลต่างกัน dที่มีอยู่ในtable_1แต่ไม่ได้อยู่ในtable_2และeอยู่ในแต่ไม่ได้อยู่ในtable_2table_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
มีวิธีใดบ้างที่จะทำสิ่งนี้โดยไม่ต้องทำซ้ำข้อมูล? (เช่นการสร้างตารางอื่นที่มีทุกอย่าง)
ขอบคุณ!
คำตอบ
อะไรทำนองนี้:
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 ;