我正在尝试实现在 SSRS
报告上显示的适当分组,该分组由 SSRS
中定义的“每周”或“每月”参数驱动(不是存储过程的参数)。为此,我在名为“日期”的字段的类别组表达式中使用以下内容(例如,格式为“2014-03-01”):
=IIF(
Parameters!date_range.value="Weekly",
DATEPART("week", Fields!Date.Value),
DATEPART("month", Fields!Date.Value)
)
这会导致以下异常:
The Value expression for the field ‘Date’ contains an error: Argument 'DateValue' cannot be converted to type 'Date'. (rsRuntimeErrorInExpression). An error has occurred during report processing. (rsProcessingAborted)
为什么?
最佳答案
实现此目的的最简单方法是首先编写查询,该查询会像这样提取结果。
SQL Server 查询
SELECT DATEPART(MONTH, Date_Column) AS [Monthly]
,DATEPART(WEEK, Date_Column) AS [Weekly]
,SUM(Some_Column) AS Total
FROM Table_Name
GROUP BY DATEPART(MONTH, Date_Column)
,DATEPART(WEEK, Date_Column)
SSRS 报告
添加矩阵数据区域。将 Total
列拖放到 DATA
。
创建一个参数,例如Text
类型的GROUP ON
,并提供值
1) Weekly
2) Monthly
现在在ROW GROUPS
Pane 中,右键单击唯一可见的行组并转到GROUP PROPERTIES
在 GROUP ON 部分中放置以下表达式。
=IIF(Parameters!Groupby.Value = "Monthly", Fields!Monthly.Value, Fields!Weekly.Value)
在数据区域ROWS
部分使用完全相同的表达式。
对于列名称,您可以使用以下表达式...
=IIF(Parameters!Groupby.Value = "Monthly", "Monthly", "Weekly")
你就可以开始了。
重要说明
SSRS 是一个很酷的数据呈现工具,但在数据操作方面就不那么酷了,为了获得更好的性能,可以在更接近源(数据库、SQL Server)的地方进行各种数据操作。
所有演示内容都应在 SSRS 上处理。
关于sql - 显示根据参数按周或月分组的 SSRS 报告上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25454025/