我有一个针对SQL Server数据库运行的查询.其中一列使用该STUFF()功能.
当我在SQL编辑器窗口中运行查询时,结果值如下所示:
1234
Run Code Online (Sandbox Code Playgroud)
当我尝试在SSRS报告中使用此查询时,SSRS会自动在STUFF()函数中放置一个列别名,从而产生如下所示的值:
<Expr1>, 1</Expr1><Expr1>, 2</Expr1><Expr1>, 3</Expr1><Expr1>, 4</Expr1>
Run Code Online (Sandbox Code Playgroud)
两者之间的唯一区别是,当我在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, …Run Code Online (Sandbox Code Playgroud)