我正在构建SSRS报告,并且在解决如何实现SSRS报告时遇到了一些问题。分层SQL查询,SSRS 2008和求和列
首先,这里是数据的基本结构:
- 1A级
- 2A级
- 等级2b中
- 等级2C
- 3A级
- 1b级
- 等级1C
在数据库中,每一级具有一个ID和一个父id其中在根的所有父IDS(1电平的父母)为0。此外,每个级别具有数字值的列。例如,我可能有:
Level1a
ParentId = 0
Id = 1
DataValue = 42
Level2a
ParentId = 1
Id = 2
DataValue = 1
目前,我实现了一个公共表表达式来获取数据的层次结构和层次:
WITH cteTable(id, parentId, data, level) AS
(SELECT id,
parentId,
data,
1 AS level
FROM sampleTable
WHERE (parentId = 0)
UNION ALL
SELECT b.id,
b.parentId,
b.data,
c.level + 1 AS Expr1
FROM sampleTable AS b
INNER JOIN cteTable AS c ON b.parentId= p.id
)
SELECT id,
parentId,
data,
level
FROM cteTable
所以从早期的样本数据,查询的结果是:
+----+----------+------+-------+
| id | parentId | data | level |
|----+----------+------+-------+
| 1 | 0 | 42 | 1 |
| 2 | 1 | 1 | 2 |
+----+----------+------+-------+
从这里,我需要建立一个报告,将数据总结到根级。例如,报告将显示id 1的数据总和为43.我不确定的一件事是层次有多深 - 将会出现一些情况,其中没有儿童等级和其他树在哪儿几个级别深。
我现在正在考虑两种选择。一个是创建一个向下钻取的报告,它将在每个级别显示可用数量的数据。例如:
-Level1a SUM_LEVEL2_AND_LEVEL1a_DATA
Level2a DATA
Level2b DATA
-Level2c SUM_LEVEL3_AND_LEVEL2c_DATA
Level3a DATA
Level1b DATA
Level1c DATA
另一种方法是将数据和为根和仅与父总数报告显示一个简单的表。例如:
Level1a SUM_LEVEL1A_AND_ALL_CHILDREN_DATA
Level1b SUM_LEVEL1B_AND_ALL_CHILDREN_DATA
Level1c SUM_LEVEL1C_AND_ALL_CHILDREN_DATA
我似乎无法弄清楚如何获得向下钻取报告与谷歌上搜索我所做的工作(有一个环节here这似乎是有用的,但我真不敢让它工作)。
更改数据库架构不是一个选项。
是否有人知道我可以使用任何好的资源开始或有任何想法如何进行此?
让我知道我是否缺少任何东西...