|
Объединение событий
|
|||
---|---|---|---|
#18+
Уважаемые коллеги, добрый день! Прошу строго меня не судить не столь опытный специалист в 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 Буду Вам бесконечно признателен и благодарен за оказанную помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 19:03 |
|
Объединение событий
|
|||
---|---|---|---|
#18+
chasovoy96, посмотрите по форуму, такой вопрос был на этой или на прошлой неделе. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 19:34 |
|
Объединение событий
|
|||
---|---|---|---|
#18+
если вы из текущего результата хотите сделать одну строку, это одно если вам в принципе нужен результат в виде строки с диапазоном времен, это другое придется в вашем коде разбираться, что бы понять какие там исходные таблицы и поля ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 19:38 |
|
Объединение событий
|
|||
---|---|---|---|
#18+
PizzaPizza, Благодарю Вас за ответ! Да, Вы правы мне в принципе нужен результат в виде строки с диапазоном времен, данные привел в качестве примера. Я пытался копать в сторону for xml path но так и не разобрался с тем случаем, что у меня (( ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 19:43 |
|
Объединение событий
|
|||
---|---|---|---|
#18+
вам надо выбирать уникальные строки ваших клиентов и клеить к ним строку с датами, которую проще получить кореллированным подзапросом с 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 23:02 |
|
|
start [/forum/topic.php?fid=46&msg=40009551&tid=1685524]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 287ms |
total: | 399ms |
0 / 0 |