SSRS' where where'

时间:2018-06-15 03:56:54

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

我有一张包含多家公司销售信息的表格。公司制作的每个销售交易都存储在表格中,并且还存储销售发生的一年中的一周(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列中,它显示了5表示Alpha,1表示Beta,而2表示Coolbeans。

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

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

3 个答案:

答案 0 :(得分:1)

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

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

enter image description here

enter image description here

答案 1 :(得分:0)

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

尝试添加=CountRows()作为公式的一部分,ssrs会为您处理分组。当我正常联机时,我会检查命令的格式。

答案 2 :(得分:0)

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

<header id="pageHeader">Header</header>
<article id="mainArticle">Article</article>
<nav id="mainNav">Nav</nav>
<footer id="pageFooter">Footer</footer>