首页 > 解决方案 > SSRS 季度自定义

问题描述

我需要构建一个具有自定义季度期间的报告,如下所示:

第 1 季度 - 7 月、8 月、9 月 第 2 季度 - 10 月、11 月、12 月 第 3 季度 - 1 月、2 月、3 月 第 4 季度 - 4 月、5 月、6 月

我对如何解决这个问题有点迷茫,因为我需要创建一个参数,如果他们选择第 1 季度,它应该只显示相应月份的数据。

有没有人可以提出一些建议?

脚本如下所示:

SELECT
ATD.TrnYear, 
ATD.TrnMonth, 
ATD.Invoice, 
ATD.InvoiceDate, 
ATD.Salesperson, 
ATD.Customer, 
ATD.StockCode, 
ATD.ProductClass, 
ATD.QtyInvoiced, 
ATD.NetSalesValue, 
ATD.CostValue, 
AC.Name

从 ArTrnDetail ATD 加入 ArCustomer AC ON ATD.Customer = AC.Customer

所以我需要添加如何区分用户何时选择季度。

非常感激。

标签: sql-serverdatereporting-servicesparameters

解决方案


假设您的 ATD.TrnMonth 列使用整数来表示月份,我在您的查询中添加了一个附加列以指示季度 ( QTR )。还添加了根据用户选择过滤结果的条件(WHERE Qtr = @quarter)。这将是您的数据集查询。

SELECT *
FROM 
    (SELECT
    CASE 
        WHEN ATD.TrnMonth IN (7,8,9) THEN 1
        WHEN ATD.TrnMonth IN (10,11,12) THEN 2
        WHEN ATD.TrnMonth IN (1,2,3) THEN 3
        WHEN ATD.TrnMonth IN (4,5,6) THEN 4
    END as Qtr,
    ATD.TrnYear, 
    ATD.TrnMonth, 
    ATD.Invoice, 
    ATD.InvoiceDate, 
    ATD.Salesperson, 
    ATD.Customer, 
    ATD.StockCode, 
    ATD.ProductClass, 
    ATD.QtyInvoiced, 
    ATD.NetSalesValue, 
    ATD.CostValue, 
    AC.Name
    FROM ArTrnDetail ATD JOIN ArCustomer AC ON ATD.Customer = AC.Customer
    ) as ArTrnDetail
WHERE Qtr = @quarter

在您的报告生成器中,使用以下设置创建参数:

常规选项卡

  • 名称:
  • 提示:(您想为用户显示的任何内容)

可用值选项卡

  • 选择指定值,然后添加 4 个可用值。
  • 标签应该是 1、2、3 和 4(四分之一),应该是您希望在下拉列表中显示的标签。确保标签与您的值(季度)相对应

默认值选项卡

  • 例如,当报表运行并且您希望报表默认为第一季度时。选择指定值,将 1 放入值中。如果您不想要默认值,请离开此选项卡。

注意 - 这是单值下拉列表的配置。如果您希望用户能够选择多个值。在参数的“常规”选项卡中,选中“允许多个值”并将查询条件从WHERE Qtr = @quarter 更改WHERE Qtr IN (@quarter)。


推荐阅读