У меня есть две таблицы со следующими данными, и я использую Microsoft SQL Express для управления ими:SQL - Перемещение или обновление данных в первую пустую колонку в другой таблице
Table1
Name Col1 ColSwitch
Row1 3 NULL
Row2 7 NULL
Row3 5 True
Row4 12 True
Row5 2 True
Table2
Name Col1 Col2 Col3
Row3 3 NULL NULL
Row4 4 10 NULL
Row6 2 3 9
Row7 6 NULL NULL
Я ищу, чтобы переместить строки из Table1 в Table2 когда ColSwitch является таковой t до True. я могу успешно сделать это с помощью следующих действий:
INSERT Table2 (Name, ColN)
SELECT Name, Col1
FROM Table1
WHERE ColSwitch LIKE 'True'
Но моя проблема возникает, когда мне нужно, чтобы выбрать первый пустой столбец при обновлении существующих записей (Row3 и Row4 в примере). Я нашел пример, где был использован CASE WHEN ELSE, но я бы хотел избежать использования PHP на данный момент времени.
Просто используя предоставленный метод без PHP, заполните первый столбец столбцом с именем NULL. (Ниже)
SELECT Name,
CASE
WHEN Col1 IS NULL THEN 'Col1'
WHEN Col2 IS NULL THEN 'Col2'
ELSE 'Col3'
END as ColN
FROM Table2
Желаемый результат будет где первое поле NULL, в Table2 заменяется значением из Table1, или, альтернативно, при добавлении к Col3, если все уже заполнены.
Выход предполагая Row3 = 5, Row4 = 12 и Row5 = 2 из исходных таблиц на вершине.
Name Col1 Col2 Col3
Row3 3 5 NULL
Row4 4 10 12
Row5 2 NULL NULL
Row6 2 3 9
Row7 6 NULL NULL
Можно ли это сделать только с помощью простого SQL? Если да, пожалуйста, объясните, как наилучшим образом подойти к этому и, если возможно, привести пример :)
Показать требуемый выход для ввода – lad2025
код [MERGE заявление] (https://msdn.microsoft.com/en-us/library/bb510625.aspx) позволяет делать вставки и обновления в одном запросе , – JodyT
Все столбцы NULL начинаются с первого NULL? Или может быть NULL в столбце 3 и значение в столбце 4? –