SSRS报告跨多个页面重复列

时间:2018-04-18 15:49:16

标签: sql-server reporting-services ssrs-2012 sql-server-data-tools rdl

作为一个非常简单的示例,假设我有以下DataSet我正在尝试从以下位置创建SSRS报告(.rdl文件):

TabOrdinal  TabName     EndDate     Value
1           First Tab   1/1/2018    141
1           First Tab   1/1/2018    297
1           First Tab   1/1/2018    309
1           First Tab   1/1/2018    705
1           First Tab   1/1/2018    398
1           First Tab   1/2/2018    309
1           First Tab   1/2/2018    753
1           First Tab   1/2/2018    641
1           First Tab   1/2/2018    806
1           First Tab   1/2/2018    177
1           First Tab   1/2/2018    503
1           First Tab   1/3/2018    653
1           First Tab   1/3/2018    717
1           First Tab   1/3/2018    969
1           First Tab   1/3/2018    631
1           First Tab   1/3/2018    614
1           First Tab   1/3/2018    160
1           First Tab   1/4/2018    463
1           First Tab   1/4/2018    997
1           First Tab   1/4/2018    87
1           First Tab   1/4/2018    378
1           First Tab   1/4/2018    972
1           First Tab   1/4/2018    212
2           Second tab  1/4/2018    873
2           Second tab  1/4/2018    525
2           Second tab  1/4/2018    693
2           Second tab  1/4/2018    48
2           Second tab  1/4/2018    20
2           Second tab  1/4/2018    685
2           Second tab  1/4/2018    688

我在报告中创建了以下分组:

顶级行组:

Name: Tab
Group On: [TabName]
Page Breaks: Between Each Group

代码:

<TablixMember>
  <Group Name="Tab">
    <GroupExpressions>
      <GroupExpression>=Fields!TabName.Value</GroupExpression>
    </GroupExpressions>
    <PageBreak>
      <BreakLocation>Between</BreakLocation>
    </PageBreak>
    <PageName>=Fields!TabName.Value</PageName>
  </Group>
  <SortExpressions>
    <SortExpression>
      <Value>=Fields!TabOrdinal.Value</Value>
    </SortExpression>
  </SortExpressions>
  <TablixMembers>
  ...
  </TablixMembers>
</TablixMember>

列组

Name: EndDate
Group On: [EndDate]

代码:

<TablixMember>
  <Group Name="EndDate">
    <GroupExpressions>
      <GroupExpression>=Fields!EndDate.Value</GroupExpression>
    </GroupExpressions>
  </Group>
  <SortExpressions>
    <SortExpression>
      <Value>=Fields!EndDate.Value</Value>
    </SortExpression>
  </SortExpressions>
  <TablixMembers>
    <TablixMember />
  </TablixMembers>
</TablixMember>

现在,根据我提供的样本数据,我想要发生的事情将是我的报告看起来如下:

TAB1:

1/1/2018       1/2/2018      1/3/2018     1/4/2018
<data>         <data>        <data>       <data>

TAB2:

1/4/2018
<data>

但是,我不知道为什么,但我的第二个标签包含第一个标签上存在的所有相同日期的空列,因此第二个标签如下所示:

TAB2:

<empty column>       <empty column>     <empty column>     1/4/2018
<empty column>       <empty column>     <empty column>     <data>

我怎样才能拥有它,以便报告知道用每个标签重置日期列?

我希望这是有道理的,但是,如果没有,请告诉我,我会尝试进一步解释。

1 个答案:

答案 0 :(得分:1)

它显示在右侧的原因是因为您在EndDate上进行了分组,但结束日期在1/4/2018之前已经有三个值。

也许您可以修改SQL查询并添加ROW_NUMBER(),如下所示:

 ... ROW_NUMBER() OVER(PARTITION BY TabName ORDER BY TabName, EndDate) AS rn

然后在您的列组中,只按rn分组。您可能需要稍微修改ROW_NUMBER部分,以确保正确设置值。我已修改为仅按TabName进行分区。我认为这就是你想要的。

为了隐藏没有值的文本框,我确定有多种方法可以解决它。我成功的一种方法是右键单击列并转到列可见性。从那里我添加了表达式 - =ReportItems!TextBoxName.Value = NOTHING ...当然,你必须为你的&#34;数据&#34;使用正确的名称。