Получить различные значения столбцов в значение varchar

sql-server #for-xml

#sql-сервер #для-xml

Вопрос:

У меня есть большой запрос, и в нем есть подзапрос, в котором я пытаюсь получить все отдельные строки из столбца временной таблицы

 (SELECT
        STUFF((
        SELECT DISTINCT #SomeTemporaryTable.CountryName
        FROM #SomeTemporaryTable
        WHERE (#SomeTemporaryTable.SomeId = 1
        AND #SomeTemporaryTable.AnotherId = 2)
        FOR XML PATH(''''),TYPE).value(''(./text())[1]'',''VARCHAR(MAX)'')
    ,1,2,'''') AS BreakDownLocationCountry,
 

Проблема в том, что я получаю следующую ошибку:

Предложение ORDER BY недопустимо в представлениях, встроенных функциях, производных таблицах, подзапросах и общих табличных выражениях, если также не указано значение TOP или FOR XML.

Может кто-нибудь, пожалуйста, помогите мне?

P.S: Microsft SQL 2008

Комментарии:

1. Microsft SQL 2008 — это заставляет меня плакать, почему вы наказываете себя, используя устаревшую и полностью неподдерживаемую платформу? Также я не думаю, что вы включили достаточно своего запроса, чтобы помочь решить сообщение об ошибке (я нигде не вижу ORDER BY ). Не могли бы вы, пожалуйста, создать минимальную демонстрацию проблемы в db<>fiddle ? например, СОЗДАТЬ ТАБЛИЦУ, ВСТАВИТЬ и минимальный запрос, который генерирует ошибку (нам, конечно, не нужен весь ваш запрос).

2. Я не наказываю себя. Мой босс наказывает меня :))

3. ORDER BY продолжается в строке выше FOR XML

4. Почему вы «удвоили» свои одинарные кавычки? Это недопустимый синтаксис (если только это не часть какого-то более крупного динамического оператора, который вы нам не показываете, но тогда вы должны сделать приведенное выше представление о том, чего вы на самом деле пытаетесь достичь). Кроме того, ошибка, которую вы получаете, не связана с вышеизложенным; ORDER BY предложения нет.