У меня есть набор данных для пользователей за минуту в течение часа, который включает только ненулевые записи, я хотел бы обновить таблицу, чтобы она включала все менуэты.
В настоящее время мой первый хотел бы, если бы я вставил его вместо импортированного:
`
CREATE TABLE table1 (minute INT NOT NULL, users INT NOT NULL);
INSERT INTO table1 (minute, users) VALUES (32,1);
INSERT INTO table1 (minute, users) VALUES (40,1);
INSERT INTO table1 (minute, users) VALUES (41,1);
INSERT INTO table1 (minute, users) VALUES (51,1);
INSERT INTO table1 (minute, users) VALUES (52,1);
`
Я бы хотел, чтобы 55 других минут в час показывались вместе с пользователями a 0. диапазон составляет (0-59)
в помощь, что я создал вторую таблицу
`
CREATE TABLE m_fix
(minute INT NOT NULL, users INT NOT NULL);
INSERT INTO m_fix (minute, users) VALUES (0,0);
INSERT INTO m_fix (minute, users) VALUES (1,0);
INSERT INTO m_fix (minute, users) VALUES (2,0);
INSERT INTO m_fix (minute, users) VALUES (3,0);......
`
Мне удалось сделать выборочное объединение для отображения информации, которую я хотел, с этим кодом:
`
SELECT
m_fix.minute,
Case
When table1.users IS NULL THEN m_fix.users
ELSE table1.users
END AS users
FROM m_fix
LEFT JOIN table1 ON m_fix.minute=table1.minute;
`
Но я хочу обновить мою таблицу1 вместо того, чтобы выполнять запрос, поскольку в конечном итоге я собираюсь экспортировать эти данные в другое место.
Для этого я сделал этот код:
`
INSERT INTO dbo.table1
SELECT dbo.fix.minute, dbo.fix.users
FROM dbo.fix
LEFT JOIN dbo.table1
ON dbo.fix.minute=dbo.table1.minute
Where dbo.fix.minute!= dbo.table1.minute;
Select * From dbo.table1;
`
и это просто у меня моя старая таблица 1 с 5 строками
Это только мой тестовый пример, у меня на несколько дней больше данных для обработки, поэтому я хотел бы, чтобы мне было приказано запускать каждую новую импортируемую таблицу, которая добавляет все отсутствующие менуэты с user = 0