sql-server - 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
所以我需要添加如何区分用户何时选择季度。
非常感激。
解决方案
假设您的 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)。
推荐阅读
- javascript - 如何在每个具有多个 vCPU 的多个 Google App Engine 实例之间共享缓存?
- button - 单选按钮在提交时切换
- sqlite - phpliteadmin 说 SQLite3: not installed 但它是
- ruby-on-rails - 从 CarrierWave 雾中移植的 CarrierwaveDirect 版本文件名
- reactjs - 字体真棒图标不显示反应
- xml - 由于变音符号,xml 格式不正确。
- graph-theory - 使用 Floyd-Warshall 算法找到负权重的圆
- python - 将每周重采样为每日 CSV 数据帧
- c++ - Visual Studio 2015 中未定义的 MPI
- c# - ASP.Net Web 应用程序连接到主机 SQL 数据库