【问题标题】:SSRS 2008 add columns dynamically per id in a table.SSRS 2008 为表中的每个 id 动态添加列。
【发布时间】:2015-03-13 15:59:36
【问题描述】:

这是我的数据集的一个示例:

ID  Name    Date
DCMTest1    Planning    02-06-12
DCMTest1    Planning    01-09-13
DCMTest1    Planning    06-09-13
DCMTest2    Planning    03-08-11
DCMTest2    Planning    05-07-12

结果表必须动态添加列(列的数量未知)。这是我希望报告中的数据的示例:

ID          Planning    Planning    Planning
DCMTest1    02-06-12    01-09-13    06-09-13
DCMTest2    03-08-11    05-07-12    

我在 ID (Project_nummer) 上有一个行组,我尝试通过两种不同的方式获得我想要的结果。 我在 Date 上使用了列组标题,这导致每个不同日期的列分组(这显然是错误的):

结果1:

ID          Planning    Planning    Planning    Planning    Planning
DCMTest1    02-06-12    01-09-13    06-09-13        
DCMTest2                                        03-08-11    05-07-12

我已经在名称(计划)上尝试了一个列组,它给出了结果 2:

结果2:

ID          Planning
DCMTest1    02-06-12
DCMTest2    03-08-11

结果 2 有一个正确的开始,但没有动态添加列。我错过了一个表达吗?

我还不能上传图片,所以这里有一个 SSRS 分组的链接: SSRS grouping

感谢任何帮助。我正在使用 MS SQL Server 2008 和 Visual Studio 9.0

【问题讨论】:

  • 如果它按组列出这些日期而不是跨组,你能使用它吗?
  • 我个人也更喜欢行组,但这位客户不喜欢。

标签: sql-server-2008 dynamic reporting-services ssrs-2008 grouping


【解决方案1】:

我想到的是稍微改变您的查询以包括按 ID 分区的行号,然后是行号上的列组。在查询中的 select 子句中添加一条语句,如下所示:

Row_Number() OVER (Order by ID) as Col_group,

这会给你一个这样的结果集:

    ID   Col_group     Name       Date
DCMTest1    1       Planning    02-06-12
DCMTest1    2       Planning    01-09-13
DCMTest1    3       Planning    06-09-13
DCMTest2    1       Planning    03-08-11
DCMTest2    2       Planning    05-07-12

然后像在结果 1 中那样创建一个列组,但使用新的 Col_group 列而不是日期进行分组。

【讨论】:

  • 抱歉,我的回复延迟了。这可能适用于我上面显示的确切数据集。但是有更多具有不同日期的日期列,然后 Col_group 相乘并显示所有可能性。例如:其中一个测试项目有 8 行,当我添加 col_group 时,它会产生 65000 行。虽然我喜欢这个主意,但我会继续玩下去。感谢您的回复。
  • 通过对我的数据和存储过程进行一些调整以及 row_number 中的 partition by 子句,我已经能够解决这个问题。我仍然需要解决一些其他问题,但这个问题已经得到解答。感谢您为我指明正确的方向!
【解决方案2】:

如果你想让数据在报表服务中使用,第一个数据集就可以了,你只需要将SSRS中的信息用矩阵分组即可。

【讨论】:

  • 他的列组对于矩阵来说是什么?或者,更笼统地说,您能描述一下您将如何设置矩阵吗?
  • 您能澄清一下吗?我用行组和列组修改了表格(看起来与矩阵相同)。现在我已经尝试了矩阵,但我看不出有什么不同。如果我尝试结果 1,我仍然会为每个唯一日期获得一列,而当我尝试结果 2 时,我仍然只能获得一列。
  • 我不确定这个答案是否有用。他显然已经在使用群组了。
猜你喜欢
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2015-05-18
  • 2017-07-16
相关资源
最近更新 更多