VMesser
@VMesser
gitter.im/VBA-developers

Как трансформировать 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. Проблема осталась в том, чтобы под нужный год подвести именно данные от нужного года.
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Roman-Fov
Так всё просто. Нужно выбрать элементы содержащие в себе определённый год. Сделать это можно так (для 2018):
/ScheduleTable/Schedule[Year = '2018']/Item
Для других год только менять и писать куда надо
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы