Объединить несколько таблиц в одну таблицу SQL Server - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу объединить 3 таблицы в одну только для получения полных данных с условиями ниже

  • объединить 3 таблицы [test1], [test2], [test3] в одну таблицу [test]
  • Если при объединении столбец пуст, выберите из другой таблицы
  • Col1 существует во всех 3 таблицах

Вот мой пример кода для объединения из таблицы 2 в тест.

MERGE INTO [dbo].[test] a
USING [dbo].[test2] b ON a.col1 = b.col1

WHEN MATCHED THEN
    UPDATE 
    SET col1 = b.col1,
        col2 = b.col2,
        col3 = b.col3,
        col4 = b.col4
    WHERE col1 = '' OR col2 = '' OR col3 = '' OR col4 = '';

Получают ошибки:

Неверный синтаксис рядом с ключевым словом «где».

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Пожалуйста, попробуйте использовать функцию COALESCE, а не использовать условие where.Функция COALESCE принимает следующее значение, если встречается NULL.

    Merge into [dbo].[test] a   
    using [dbo].[test2] b
    on a.col1 = b.col1
    when matched then
    update
    set col2 = COALESCE(a.col2, b.col2),
    col3 = COALESCE(a.col3, b.col3),
    col4 = COALESCE(a.col4, b.col4);

Таким образом, в модифицированном коде, если таблица [dbo]. [Test] col2 имеет значение Null, тогда она принимает значение из [dbo]. [Test2].Поскольку вы будете использовать COALESCE, вы сможете объединить любое количество значений.

0 голосов
/ 14 ноября 2018

Можете ли вы показать структуру таблицы.

вы можете использовать UNION ALL Оператор перейдите по этой ссылке.

https://www.techonthenet.com/sql_server/union.php

ИЛИ INNER JOIN с UPDATE оператор, объединяющий условие в WHERE предложение

...