【发布时间】:2014-10-28 17:26:14
【问题描述】:
我有一个针对 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;
编辑:代码已重新排列,问题重新措辞以使问题更清晰。我对返回的列本身进行别名没有问题:相反,SSRS 实际上是在我的 STUFF() 函数中为子查询添加别名,从而导致字段本身出现额外的垃圾。
【问题讨论】:
-
给该列一个别名你定义,SSRS不会觉得有必要为你创建一个。
-
如何在列中添加别名。请这是列(CourseModule AS varchar(20))
-
嗯...
STUFF((...) AS CourseModule? -
这就像重复 ssrs 已经在做的事情,但现在用更长的单词
-
我不希望它有别名,我想要的只是列不显示
, 1 , 2 , 3 , 4 ,而不是仅仅显示,1,2,3,4
标签: sql-server reporting-services