问题描述
|
假设我的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
我想的可能性!
在RDLC报告中,在运行时更改报告XML。(由于大小和颜色是随机的,因此非常复杂)
在Crystal报表中为每个星期创建一个新报表,最后在主报表中将它们显示为子报表。(如果我必须创建15周或更长时间的报表,这样做会很有效)。
为每个星期创建交叉表,并使其对齐,使其与上面的报告类似。
有人会建议我以上述格式生成报告的最佳方法是什么。是我缺少的东西。
解决方法
这可以使用分组来完成,但是需要大量的努力。假设weeks列是静态的,则基本上需要对每个数据列(周,大小,颜色)进行分组,然后将标题放在汇总的汇总页脚中或将这些值向下移动到所需的总计位置。
第一部分是故意含糊的,因为要详细描述这一点会很复杂,所以我将提出另一种解决方案。取而代之的是,您可以使用交叉表,但是由于您的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查询,我相信这会更好解。如果您有任何问题,请告诉我。希望这可以帮助。