sql - 显示根据参数按周或月分组的 SSRS 报告上的数据

标签 sql sql-server reporting-services

我正在尝试实现在 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/

相关文章:

sql-server - sp_CONFIGURE  'Database Mail XPs' , 1 做什么

reporting-services - 在 SSRS 等 Crystal Reports 中创建表格

asp.net - SQL Reporting Services 可以与 ASP 成员(member)资格提供商一起使用吗?

c# - 在 CodeBehind C# SQL 中访问 SCOPE_IDENTITY()

sql - 在货币汇率中使用的最大小数位数是多少?

java - 无法离开加入第二张 table

c# - 读取 SQL Server 2005 ldf 文件

sql - 创建基于云的 SQL 数据库的最简单/最便宜的方法是什么?

sql - 使用 T-SQL 对 XML 文档进行聚合查询

reporting-services - SSRS范围条形图,无数据时不同颜色