【问题标题】:SSRS Quarter period customSSRS 季度自定义
【发布时间】:2020-02-05 08:21:47
【问题描述】:

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

第 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-server date reporting-services parameters


【解决方案1】:

假设您的 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 个可用值。
  • label 应该是 1、2、3 和 4(四分之一),value 应该是您希望在下拉列表中显示的标签。确保标签与您的值(季度)相对应

默认值选项卡

  • 例如,当报表运行并且您希望报表默认为第一季度时。选择Specify Values,在值中填入1。如果您不想使用默认值,请离开此选项卡。

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

【讨论】:

  • (FLOOR((ATD.TrnMonth-1)/3)+2)%4+1 as QTR if you don't like if
【解决方案2】:

您需要将数据映射到日期维度。

完成此操作后,您将拥有一个可以连接到日期表的事实表。通过代理键或业务键。

一个例子可以是。

查询报告

Select SalesAmount,SalesDate,Employee from fact.Sales S
inner join Dim.Datedimension d on s.SalesDate = d.Date

where d.QuarterNo = @DateParameter

查询过滤器

Select distinct QuarterNo,QuarterLabel(Your Quarter 1 - Jul, Aug, Sep) From Dim.Datedimension

QuarterNo 将是您在参数设置中的值。 QuarterLabel 将是您的标签。

请记住调整您的日期维度以匹配您的特殊季度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多