SSRS автоматически сглаживает столбец подзапросов, используя FOR XML

У меня есть запрос, выполняющийся с базой данных SQL Server. Один из столбцов в ней использует функцию STUFF() .

Когда я запускаю запрос в окне редактора SQL, результирующее значение выглядит так:

 1234 

Когда я пытаюсь использовать этот запрос в отчете SSRS, SSRS автоматически помещает псевдоним столбца в функцию STUFF() , приводя к значению, которое выглядит так:

 <Expr1>, 1</Expr1><Expr1>, 2</Expr1><Expr1>, 3</Expr1><Expr1>, 4</Expr1> 

Единственное различие между ними заключается в том, что при сохранении запроса в SSRS автоматически добавляется термин «AS Expr1» (см. Код ниже).

Как я могу запретить SSRS автоматически добавлять этот псевдоним и запускать запрос так, как он есть?

  SELECT FirstName, LastName, CourseTitle, LastLoginDate, NoOfModules, COUNT(CourseCompleted) AS ModulesStarted, STUFF( ( SELECT ',' + CAST(CourseModule AS varchar(20)) -- SSRS puts "AS Expr1" here FROM EDSF WHERE FirstName = e.FirstName AND LastName = e.LastName AND Coursecompleted = '1' AND CourseTitle = e.CourseTitle FOR XML PATH('') ),1,1,'' ) AS CoursesCompleted FROM EDSF e WHERE Coursecompleted = '1' OR Coursecompleted = '0' GROUP BY FirstName, LastName, CourseTitle, LastLoginDate, NoOfModules; 

EDIT: код был перестроен, и вопрос переформулирован, чтобы сделать проблему более ясной. У меня нет проблемы с псевдонимом возвращаемого столбца: вместо этого SSRS фактически добавляет псевдоним в подзапрос в моей функции STUFF() , что приводит к лишнему нежеланию в самом поле.

Solutions Collecting From Web of "SSRS автоматически сглаживает столбец подзапросов, используя FOR XML"

Я думаю, что есть некоторая путаница в комментариях изначально: вопрос заключается не в том, чтобы дать столбцу псевдоним, вопрос в том, почему SSRS не позволит подзапросу внутри команды STUFF() существовать без псевдонима. XML интерпретирует это и включает имя столбца в самих значениях поля, преобразуя входные данные «1», «2», «3» и «4» в (форматирование в качестве кода, поскольку оно интерпретируется как HTML):

 "<Expr1>, 1</Expr1><Expr1>, 2</Expr1><Expr1>, 3</Expr1><Expr1>, 4</Expr1>" 

Я уверен, что есть способ сказать FOR XML игнорировать имена столбцов, и я также уверен, что опция хранимой процедуры – лучший способ. Тем не менее, есть времена, когда хранимая процедура не является вариантом, и поэтому я включу способ избавиться от оскорбительных значений с помощью REPLACE()

 SELECT FirstName, LastName, CourseTitle, lastlogindate, Noofmodules, COUNT(Coursecompleted) AS modulesstarted, REPLACE(REPLACE(REPLACE('<' + STUFF(( SELECT ',' + CAST(CourseModule AS varchar(20)) AS Expr1 FROM Esdf WHERE FirstName = e.FirstName AND LastName = e.LastName AND Coursecompleted = '1' AND CourseTitle = e.CourseTitle FOR XML PATH('')),1,1,'' ), '<Expr1>', ''), '</Expr1>', '') , ',', '' ) AS CoursesCompleted FROM Esdf e WHERE Coursecompleted = '1' OR Coursecompleted = '0' GROUP BY FirstName, LastName, CourseTitle, lastlogindate, Noofmodules