Совокупные результаты в 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.
Как я мог этого добиться?