Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FOR XML PATH объединение событий / 8 сообщений из 8, страница 1 из 1
05.10.2020, 08:58
    #40005369
chasovoy96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
Здравствуйте, уважаемые коллеги!
Очень прошу Вашей помощи. Пожалуйста Вы не могли бы мне подсказать как при помощи функции FOR XML PATH возможно объединить события (как в таблице).
...
Рейтинг: 0 / 0
05.10.2020, 09:49
    #40005378
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
chasovoy96,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
      t.[Пунтк],
      t.[Дата откл],
      t.[Время откл],
      t.[Дата вкл],
      t.[Врермя вкл],
      x.[msg] as [Сообщение]
from [tbl] t
    cross apply (select format([Дата откл], 'dd.MM.yy') + ' с ' + convert(varchar, [Время откл]) + ' до ' + convert(varchar, [Время вкл]) + ' запланированы ремонтные работы в ' + [Пункт] + ', 88002500000' for xml path('')) x ([msg])
 
...
Рейтинг: 0 / 0
05.10.2020, 13:42
    #40005428
chasovoy96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
felix_ff,

благодарю Вас за ответ!
Прошу прощения а Вы не могли подсказать выходит ошибка
'format' is not a recognized built-in function name

значит нужно преобразовать в другой тип?
...
Рейтинг: 0 / 0
05.10.2020, 13:45
    #40005433
chasovoy96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
chasovoy96, вот так заработало

cross apply (select convert(varchar(10), [Дата откл], 4)
...
Рейтинг: 0 / 0
05.10.2020, 13:52
    #40005436
chasovoy96
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
felix_ff, только к сожалению я так и не понял как выводить сообщение в одну строчку:

сейчас у меня выводится сообщение вот так:
15.10.2020 с 14:00 до 15.10.2020 запланированы ремонтные работы в с.Краснослободское, 88002500000

а как можно сделать условие ЕСЛИ есть события с одинаковым населенным пунктом но с разными датами отключения выводить в одну строку:

что бы получилось вот так:

15.10.2020 с 14:00 до 15.10.2020 И 16.10.2020 с 10:00 до 12:00 запланированы ремонтные работы в с.Краснослободское, 88002500000
...
Рейтинг: 0 / 0
05.10.2020, 13:56
    #40005438
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
chasovoy96,

используйте CASE или IIF (если версия сервера позволяет) внутри формирования строки.

add: а вообще по хорошему оформить вопрос сначала правильно:
https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume

c примером входных данных и что в итоге хотите получить (+ описанием логики условий)
...
Рейтинг: 0 / 0
05.10.2020, 13:57
    #40005439
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
chasovoy96,

поищите по форуму, как объединить несколько строк в одну.
...
Рейтинг: 0 / 0
05.10.2020, 13:59
    #40005441
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FOR XML PATH объединение событий
chasovoy96
а как можно сделать условие ЕСЛИ есть события с одинаковым населенным пунктом но с разными датами отключения выводить в одну строку:


дык, написать запрос.
Код: sql
1.
2.
3.
4.
select Пункт
       , строка = ( select convert(varchar(10), [Дата откл], 4) + '; '  from Таблица as x where Пункт = t. Пункт for xml path('') )
  from Таблица as t
  group by Пункт
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FOR XML PATH объединение событий / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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