Совокупные результаты в SQLAnywhere 16 (для замены XML)

Я использую Ultralite 16.0 и пытаюсь объединить несколько строк в одну.

У меня есть таблица фильмов и таблица жанров , которые имеют отношения «многие ко многим» через таблицу film_genre .

Я хочу такой результат:

      | mFilm     | idGenre |
| --------- | ------- |
| Film_One  | 1, 2    |
| Film_Two  | 1, 3, 4 |

Я могу легко сделать это в SQL Server Management Studio (SSMS) с помощью

      SELECT f.nmFilm, 
(
  REPLACE(
      STUFF(
          (SELECT g.idGenre FROM genre g
              JOIN film_genre fg on g.idGenre = fg.idGenre
              WHERE fg.idFilm = f.idFilm
              FOR XML PATH('')
          ) , 1 , 1 , ''
      )
  , '&', '&')
) AS genres FROM film f;

Однако каждый раз, когда я пытаюсь использовать FOR XML в SQLAnywhere, например, в приведенном ниже запросе

      SELECT f.nmFilm, 
    (SELECT g.idGenre FROM genre g
      JOIN film_genre fg on g.idGenre = fg.idGenre
      WHERE fg.idFilm = f.idFilm
      FOR XML AUTO
    ) AS genres FROM film f;

я получаю синтаксическую ошибку

Не удалось выполнить оператор.[База данных UltraLite] Синтаксическая ошибка рядом с «XML» [Смещение SQL: 57] SQLCODE=-131, ODBC 3 State="42000" Строка 1, столбец 1

Я не могу найти ссылку на FOR XML в документации , поэтому я не уверен, что это доступно в версии 16.0.

Как я мог этого добиться?

0 ответов

Другие вопросы по тегам