Задать вопрос
VMesser
@VMesser

Как трансформировать XML с помощью XQuery?

Как реализовать следующую обработку XML с помощью XQuery. Использую в MSSQL.
XML вида:
<ScheduleTable>
  <Schedule>
    <Year>2018</Year>
    <Item>Курочка</Item>
  </Schedule>
  <Schedule>
    <Year>2018</Year>
    <Item>Ряба</Item>
  </Schedule>
  <Schedule>
    <Year>2019</Year>
    <Item>Foo</Item>
  </Schedule>
  <Schedule>
    <Year>2019</Year>
    <Item>Bar</Item>
  </Schedule>
</ScheduleTable>

Преобразовать в:
<MainSchedule>
  <YearSchedule>
    <Year>2018</Year>
      <YearItem>
        <Name>Курочка</Name>
      </YearItem>
      <YearItem>
        <Name>Ряба</Name>
      </YearItem>
  </YearSchedule>
  <YearSchedule>
    <Year>2019</Year>
      <YearItem>
        <Name>Foo</Name>
      </YearItem>
      <YearItem>
        <Name>Bar</Name>
      </YearItem>
  </YearSchedule>
</MainSchedule>


Фактически это значит сгруппировать данные по годам.
Делаю в MSSQL с помощью FOR XML, метода nodes() с последующим его кьюерингом. Научился выводить два уникальных года, но внутри для каждого года кладутся все 4 варианта Item. Проблема осталась в том, чтобы под нужный год подвести именно данные от нужного года.
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    MS SQL Server Developer
    5 месяцев
    Далее
  • Merion Academy
    Основы реляционных баз данных SQL
    1 месяц
    Далее
  • OTUS
    SQL для разработчиков и аналитиков
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Roman-Fov
Так всё просто. Нужно выбрать элементы содержащие в себе определённый год. Сделать это можно так (для 2018):
/ScheduleTable/Schedule[Year = '2018']/Item
Для других год только менять и писать куда надо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы