Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / хитрое слияние данных / 5 сообщений из 5, страница 1 из 1
13.02.2019, 10:58
    #39773209
=Сергей=
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрое слияние данных
MSSQL2005. Есть две таблицы с одинаковой структурой, одна накопительная, другая текщая, куда пишется хронология изменения значений параметров за сутки.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table #main ([id] int identity(1,1),[Param] int not null,[Value] int not null,[BegTime] datetime not null,[EndTime] datetime not null)
create table #today ([id] int identity(1,1),[Param] int not null,[Value] int not null,[BegTime] datetime not null,[EndTime] datetime not null)
insert into #main values
(1,1,'2019-02-12 00:00:00','2019-02-12 01:17:13'),
(2,1,'2019-02-12 00:00:00','2019-02-12 23:59:59'),
(1,3,'2019-02-12 01:19:38','2019-02-12 07:37:13'),
(1,1,'2019-02-12 07:58:21','2019-02-12 14:29:08'),
(1,3,'2019-02-12 14:35:19','2019-02-12 21:07:41'),
(1,1,'2019-02-12 21:08:02','2019-02-12 23:55:57')
insert into #today values
(1,1,'2019-02-13 00:03:12','2019-02-13 03:24:49'),
(2,1,'2019-02-13 00:01:17','2019-02-13 23:58:47'),
(1,3,'2019-02-13 03:27:07','2019-02-13 07:15:51'),
(1,1,'2019-02-13 07:20:17','2019-02-13 23:57:41')


Нужно выполнить слияние данных таким образом, чтоб в таблице #main обновились записи (расширился EndTime), если значение соответствующего параметра не менялось в таблице #today, остальные добавились:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Param Value BegTime             EndTime
----- ----- ------------------- -------------------
1     1     2019-02-12 00:00:00 2019-02-12 01:17:13
2     1     2019-02-12 00:00:00 2019-02-13 23:58:47
1     3     2019-02-12 01:19:38 2019-02-12 07:37:13
1     1     2019-02-12 07:58:21 2019-02-12 14:29:08
1     3     2019-02-12 14:35:19 2019-02-12 21:07:41
1     1     2019-02-12 21:08:02 2019-02-13 03:24:49
1     3     2019-02-13 03:27:07 2019-02-13 07:15:51
1     1     2019-02-13 07:20:17 2019-02-13 23:57:41
...
Рейтинг: 0 / 0
13.02.2019, 11:27
    #39773237
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрое слияние данных
=Сергей=Нужно выполнить слияние данных таким образом, чтоб в таблице #main обновились записи (расширился EndTime), если значение соответствующего параметра не менялось в таблице #today, остальные добавились:То есть уникальным является сочетание [Param],[Value],[BegTime]?
...
Рейтинг: 0 / 0
13.02.2019, 11:32
    #39773240
=Сергей=
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрое слияние данных
alexeyvgТо есть уникальным является сочетание [Param],[Value],[BegTime]?да
...
Рейтинг: 0 / 0
13.02.2019, 11:33
    #39773243
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрое слияние данных
=Сергей=,

сравнивайте по ключу две таблицы, пишете UPDATE для пересекающихся, INSERT для выражения NOT EXISTS(). MERGE появился в 2005? Можно его использовать, чтобы одним запросом.
...
Рейтинг: 0 / 0
13.02.2019, 11:36
    #39773246
=Сергей=
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрое слияние данных
Владислав Колосовсравнивайте по ключу две таблицы, пишете UPDATE для пересекающихся, INSERT для выражения NOT EXISTS(). MERGE появился в 2005? Можно его использовать, чтобы одним запросом.
Стратегия ясна :) merge в 2008
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / хитрое слияние данных / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]