【问题标题】:Filter Results with Parameter使用参数过滤结果
【发布时间】:2014-07-22 02:03:04
【问题描述】:

我有一份报告,其中汇总了我的活跃公司在当年 [CY] 和上一年 [PY] 的美元金额。我需要添加一个参数,允许我根据上一年的金额总和切换显示的内容。

任何 PY sum 为 0 的公司都将是过去一年内的新公司,任何 PY sum 为正值的公司都将被视为现有公司。

有没有办法创建参数以便我可以在它们之间切换?到目前为止,这就是我所拥有的

查询:

SELECT
  MW.MW_Submitted_Weeks_ROY.cmp_code
  ,MW.MW_Submitted_Weeks_ROY.cmp_name
  ,MW.MW_Submitted_Weeks_ROY.Owner
  ,MW.MW_Submitted_Weeks_ROY.[Year]
  ,MW.MW_Submitted_Weeks_ROY.[CY Dollars]
  ,MW.MW_Submitted_Weeks_ROY.[PY Dollars]
  ,MW.MW_Submitted_Weeks_ROY.SalesPersonNumber
  ,MW.MW_Submitted_Weeks_ROY.OwnerLastName
FROM
  MW.MW_Submitted_Weeks_ROY
WHERE
  MW.MW_Submitted_Weeks_ROY.[Year] = @Year
  AND MW.MW_Submitted_Weeks_ROY.Week <= @Week
  AND MW.MW_Submitted_Weeks_ROY.SalesPersonNumber IN (@SalesPersonNumber)
  AND MW.MW_Submitted_Weeks_ROY.[Group] IS NOT NULL

报告按 cmp_code 分组。

编辑:

我创建了一个名为 Store 的参数,并给它赋值 0 和 1。

【问题讨论】:

    标签: reporting-services reportbuilder3.0


    【解决方案1】:

    您可以根据允许过滤您描述的条件或显示所有条件的参数向分组子句添加过滤器。类似的东西

    使用带参数的组过滤器表达式

    Group1 过滤器表达式

    =(
      (Parameters!CompanyFilter.Value=2) 
      OR 
      (Parameters!CompanyFilter.Value=1 AND (IsNothing(SUM(PY_Dollars.Value)) OR SUM(Fields!PY_Dollars.Value)=0) 
      OR
      (Parameters!Company.Value=0 AND SUM(Fields!CT_Dollars.Value)>0)
    )
    

    这会将不符合条件的任何记录排除在结果中。

    【讨论】:

    • 我看到这里的逻辑,但是我在组属性的过滤屏幕上为运算符和值字段输入什么?
    • 1 = 或 true=
    • 我很难理解这应该有效。运行报告时仍然出现错误。我不确定你用错别字写的表达是否有问题?或者,如果我太笨了,无法理解。
    • 对不起,我可能省略了一个结束括号。 AND (IsNothing(SUM(PY_Dollars.Value)) OR SUM(Fields!PY_Dollars.Value)=0)
    • 它基本上是返回一个布尔值,你可以在你的条件下过滤 =(True=FILTER)...伪代码 IF (PARAMETER=BOTH) RETURN(TRUE) ELSE IF (PARAMETER=NULL_OR_ZERO) RETURN (SUM=0) 否则如果 (PARAMETER=GREATER_THAN_ZERO) 返回 (SUM>0)。这应该只返回报告参数条件内的记录。
    猜你喜欢
    • 2021-11-21
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2015-03-23
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多