Я хочу объединить несколько таблиц в одно представление . Все таблицы будут иметь общий столбец идентификаторов, но не все идентификаторы будут во всех таблицах. Другие столбцы могут быть общими. Что мне нужно сделать, это объединить эти таблицы со всеми столбцами и там, где они отсутствуют, затем установить значение NULL.
IF OBJECT_ID(N'dbo.table1', N'U') IS NOT NULL
DROP TABLE dbo.table1;
CREATE TABLE table1 (
id INT,
comp INT,
item1 INT
);
INSERT INTO dbo.table1
VALUES
(1, 1, 1),
(2, 2, 2),
(3, 1, 3); -- note: ID 3 not in table 2
-- -------------------------------------------------------------
IF OBJECT_ID(N'dbo.table2', N'U') IS NOT NULL
DROP TABLE dbo.table2;
CREATE TABLE table2 (
id INT,
comp INT,
item2 INT
);
INSERT INTO dbo.table2
VALUES
(1, 1, 1),
(2, 2, 2),
(4, 2, 4); -- note: ID 4 not in table 1
SELECT id, comp, item1, CAST(NULL AS INT) AS item2
FROM dbo.table1
UNION
SELECT id, comp, CAST(NULL AS INT) AS item1, item2
FROM dbo.table2;
Что я получу:
id comp item1 item2
1 1 NULL 1
1 1 1 NULL
2 2 NULL 2
2 2 2 NULL
3 1 3 NULL
4 2 NULL 4
Что я ожидал (надеялся for):
id comp item1 item2
1 1 1 1
2 2 2 2
3 1 3 NULL
4 2 NULL 4
Таким образом, очевидно, что где-то должно быть соединение по идентификатору, но как мне объединить другие столбцы. Существует около 9 разных таблиц для объединения / объединения.