powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение событий
6 сообщений из 6, страница 1 из 1
Объединение событий
    #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
Объединение событий
    #40009511
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chasovoy96,

посмотрите по форуму, такой вопрос был на этой или на прошлой неделе.
...
Рейтинг: 0 / 0
Объединение событий
    #40009512
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вы из текущего результата хотите сделать одну строку, это одно
если вам в принципе нужен результат в виде строки с диапазоном времен, это другое
придется в вашем коде разбираться, что бы понять какие там исходные таблицы и поля
...
Рейтинг: 0 / 0
Объединение событий
    #40009513
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza, Благодарю Вас за ответ! Да, Вы правы мне в принципе нужен результат в виде строки с диапазоном времен, данные привел в качестве примера. Я пытался копать в сторону for xml path но так и не разобрался с тем случаем, что у меня ((
...
Рейтинг: 0 / 0
Объединение событий
    #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
Объединение событий
    #40009551
chasovoy96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza, Благодарю за ответ!
Конечно еще не до конца понимаю как это сделать в моем случае, но какое-то представление из вашего примера уже могу составить
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение событий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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