作为一个非常简单的示例,假设我有以下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>
我怎样才能拥有它,以便报告知道用每个标签重置日期列?
我希望这是有道理的,但是,如果没有,请告诉我,我会尝试进一步解释。
答案 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;使用正确的名称。