如何显示双重分组报告

时间:2011-06-23 10:13:10

标签: c# crystal-reports report rdlc

假设我的SQL查询结果是

Colour   size    week 1  week2  week 3


Black      x       1      2       3

white      xx      1      1       0

yellow     large   2      1       0

我想从这个查询中生成一个报告。

               week 1               week 2              week 3
    ----------------------------------------------------------------
           x   xx   large       x   xx   large        x   xx   large
   ----------------------       --------------        -------------                                            
    black  1     0    0         2    0    0           3    0     0 

    white  1     0    0         0    1    0           0    0     0

    yellow 2     0    0         0    2    0           0    0     0

我想到的可能性!

  1. 在RDLC报告中,在运行时更改报告XML。(非常复杂,因为大小和颜色是随机的)

  2. 在Crystal报表中为每周创建一个新报表,并在最后一个报表中显示为主报表中的子报表。(如果我必须创建15周或更长时间的报表,这会有效吗。)

  3. 为每周创建交叉表,并将它们对齐为上面的报告。

  4. 有些机构会建议我以上述格式生成报告的最佳方式。是我遗失的一些东西。

1 个答案:

答案 0 :(得分:1)

这可以使用分组来完成,但需要付出很多努力。假设周列是静态的,您基本上需要按每个数据列(周,大小,颜色)进行分组,然后将标题放在组页脚中,使用摘要或运行总计,将值降低到您需要的位置。 / p>

第一部分是故意模糊的,因为详细描述这一点会很复杂,所以我打算提出一个不同的解决方案。相反,您可以使用交叉表,但由于您的sql目前已构建,我相信每周需要一个单独的交叉表。

我建议,它基于一些假设,但我假设你有能力控制进入报告的sql查询。如果你能相信最好重新格式化sql查询并让交叉选项卡完成所有的工作,而不是自己打破几周。在我的答案的第一部分,我假设周是静态的,但我猜这不是最终的解决方案,在这种情况下,我认为如果您使用如下的数据输出,您应该能够创建一个交叉表,将允许您将周显示为列。

Color    size    week    amt

Black      x       1      1
Black      x       2      2
Black      x       3      3
white      xx      1      1    
white      xx      2      1
white      xx      3      0
yellow     large   1      2
yellow     large   2      1
yellow     large   3      0

这是未经测试的,所以不要拍我,但我相信这个布局你只需要将周和大小列设置为交叉表的列部分中的字段,十字的行部分中的颜色字段选项卡和汇总字段部分中的金额。

总的来说,在我提出解决方案之前,我试着回答这里提出的问题并理解我在这种情况下没有,但是如果你有能力修改报告所带来的sql查询,我相信这是更好的解决方案。如果您有任何问题,请告诉我。希望这会有所帮助。