【问题标题】:SSRS 'where clause'SSRS 'where 子句'
【发布时间】:2018-06-15 03:56:54
【问题描述】:

我有一个表格,其中包含几家公司的销售信息。公司进行的每笔销售交易都存储在表中,并且还存储了销售发生在一年中的第几周 (1-52)。这是我正在查询以生成 SSRS 报告的数据库表的一个小示例。

|---------------------|------------------|------------------|
|      Company        |         Week     |Sales_Transaction |
|---------------------|------------------|------------------|
|        Alpha        |         20       |      1.00        |
|---------------------|------------------|------------------|
|        Alpha        |         20       |      2.00        |
|---------------------|------------------|------------------|
|        Beta         |         20       |      9.00        |
|---------------------|------------------|------------------|
|        Alpha        |         21       |      5.00        |
|---------------------|------------------|------------------|
|        Coolbeans    |         21       |      5.50        |
|---------------------|------------------|------------------|
|        Alpha        |         22       |      2.00        |
|---------------------|------------------|------------------|
|        Alpha        |         22       |      2.00        |
|---------------------|------------------|------------------|
|        Coolbeans    |         22       |      3.00        |
|---------------------|------------------|------------------|

我有一个带有行组的矩阵,它为每个公司在矩阵中生成一条线。该矩阵在一年中的每个星期都有 52 个附加列。这是我想查看的矩阵和数据的精简版。

|--------------|---------------|----------------|----------------|
|   Company    | # Sales Wk 20 |  # Sales Wk 21 |  # Sales Wk 22 |
|--------------|---------------|----------------|----------------|
|   Alpha      |       2       |      1         |      2         |
|--------------|---------------|----------------|----------------|
|   Beta       |       1       |      0         |      0         |
|--------------|---------------|----------------|----------------|
|   Coolbeans  |       0       |      1         |      1         |
|--------------|---------------|----------------|----------------|

为了计算每家公司每周的销售交易数量,我对每一列使用如下表达式:

=Count(IIF(Fields!Sales_Week_Number.Value = "20", Fields!Sales.Value, 0))

使用上面我放置在 #Sales Wk 20 矩阵列中的示例表达式,问题在于,它不是只计算第 20 周发生的交易,而是计算公司所有周的交易。结果是,在 #Sales Wk 20 列中,Alpha 为 5,Beta 为 1,Coolbeans 为 2。

我需要怎么做才能让它只计算特定周的销售交易?

旁注:关于一年中每周的 52 列,我故意没有为此 b/c 使用列组,我需要与另一个矩阵进行一些其他计算/比较,当列使用组。但是,我确实为公司使用了行组。

【问题讨论】:

  • 如果您使用SQL Server,请使用PIVOTdocs.microsoft.com/en-us/sql/t-sql/queries/…
  • 我应该更清楚。我作为我从中提取的数据库示例提供的内容实际上是我运行的 sql 查询的结果集。我的问题中看起来像 db 结果集的第二件事实际上应该是我想看到的 SSRS 中矩阵的表示。有没有办法在 SSRS 中编写表达式来获得我想要的东西,而无需修改查询/结果集?我无法修改生成该结果集的查询 b/c 它用于同一报告中的许多其他事情。

标签: sql-server reporting-services ssrs-2008 ssrs-2008-r2


【解决方案1】:

你的表达式应该使用 SUM 而不是 count

=SUM(IIF(Fields!Sales_Transaction.Value=0,0,1))

【讨论】:

    【解决方案2】:

    我认为您可能在这里走错了路。由于您在 SSRS 中使用矩阵,因此最简单的方法是让 SSRS 为您处理分离,而不是构建 WHERE。

    尝试在公式中添加=CountRows(),然后 ssrs 会为您处理分组。当我正常在线而不是在我的手机上时,我会检查命令的格式。

    【讨论】:

      【解决方案3】:

      在矩阵的值列中使用此表达式 -

      =IIf((Fields!Sales_Transaction.Value)>0,Count(Fields!Sales_Transaction.Value),0);
      

      【讨论】:

        猜你喜欢
        • 2012-04-25
        • 1970-01-01
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多