Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение событий / 6 сообщений из 6, страница 1 из 1
17.10.2020, 19:03
    #40009507
chasovoy96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение событий
Уважаемые коллеги, добрый день!
Прошу строго меня не судить не столь опытный специалист в SQL но стараюсь учиться каждый день в том числе благодаря Вам.
Прошу Вашей помощи в объединении событий. У меня в наличии MS SQL 2008
Написал я запрос такого вида:

select
se_upload_off.CTG_NM as 'Потребитель', se_upload_off.town as 'Населенный пункт',
convert(varchar(10), dateonly, 104) as 'Дата отключения', convert(varchar(5), timeonly, 108) as 'Время отключения',
convert(varchar(10), dateonly2, 104) as 'Дата восстановления', convert(varchar(5), timeonly2, 108) as 'Время восстановления',
convert(varchar(10), dateonly, 4) + ' с '+ cast(timeonly as varchar(5)) +' до ' + cast(timeonly2 as varchar(5))+ ' запланированы ремонтные работы в '+ se_upload_off.town +', 8800250000' as 'Cообщение'
from se_supa_dg, se_upload_off
where
not exists (select se_archive_sms.[Адрес объекта] from dbo.se_archive_sms where dbo.se_archive_sms.[Адрес объекта] = se_upload_off.OBJ_ADDR and convert(varchar(10), dateonly, 104) = se_archive_sms.[Дата отключения] and convert(varchar(5), timeonly, 108) = se_archive_sms.[Время отключения])
and se_upload_off.F_OBJ_ID = se_supa_dg.eso_id
and se_upload_off.OBJ_PO = 'Производственное отделение "Талицкие электрические сети"'
and se_supa_dg.modifyutc >= DATEADD(hour, 8, cast(cast(DATEADD(day, -1, GETDATE()) as date)as datetime))
and cast(dateonly as varchar(10)) > DATEADD(hour, 8, cast(cast(DATEADD(day, +1, GETDATE()) as date)as datetime))
and se_upload_off.phone is not null and se_upload_off.category not like 'ТСО'
and se_upload_off.CTG_NM = 'ООО "Агрофирма "Восточная"'
order by dateonly

Сейчас у меня три строки с одним и тем же "Потребителем" и "Населенным пунктом" но разные "Дата отключения" и "Время отключения".
Мне необходимо в строке "Сообщение" объединить все события и вывести в одну строку сообщение такого вида:

21.10.20 с 09:30 до 17:00, 22.10.20 с 09:30 до 17:00, 23.10.20 с 09:30 до 17:00 запланированы ремонтные работы в д.Палецкова, 8800250000


Буду Вам бесконечно признателен и благодарен за оказанную помощь!
...
Рейтинг: 0 / 0
17.10.2020, 19:34
    #40009511
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение событий
chasovoy96,

посмотрите по форуму, такой вопрос был на этой или на прошлой неделе.
...
Рейтинг: 0 / 0
17.10.2020, 19:38
    #40009512
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение событий
если вы из текущего результата хотите сделать одну строку, это одно
если вам в принципе нужен результат в виде строки с диапазоном времен, это другое
придется в вашем коде разбираться, что бы понять какие там исходные таблицы и поля
...
Рейтинг: 0 / 0
17.10.2020, 19:43
    #40009513
chasovoy96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение событий
PizzaPizza, Благодарю Вас за ответ! Да, Вы правы мне в принципе нужен результат в виде строки с диапазоном времен, данные привел в качестве примера. Я пытался копать в сторону for xml path но так и не разобрался с тем случаем, что у меня ((
...
Рейтинг: 0 / 0
17.10.2020, 23:02
    #40009525
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение событий
вам надо выбирать уникальные строки ваших клиентов и клеить к ним строку с датами, которую проще получить кореллированным подзапросом с FOR XML

грубый пример

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @tt table (client nvarchar(1), dates nvarchar(10))

Insert into @tt values 
('1', 'date 1'),
('2', 'date 2'),
('1', 'date 1'),
('2', 'date 2'),
('2', 'date 2'),
('1', 'date 1');

SELECT distinct client, 

(

SELECT ttdates.dates+', '
FROM @tt as ttdates
WHERE ttdates.client = ttclient.client 
FOR XML PATH ('')

) as dates

from @tt as ttclient
...
Рейтинг: 0 / 0
18.10.2020, 09:08
    #40009551
chasovoy96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение событий
PizzaPizza, Благодарю за ответ!
Конечно еще не до конца понимаю как это сделать в моем случае, но какое-то представление из вашего примера уже могу составить
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение событий / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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