私は SSRS レポートを作成していますが、その実装方法を理解するのに少し苦労しています。
まず、データの基本構造は次のとおりです。
- レベル 1a
- レベル 2a
- レベル 2b
- レベル 2c
- レベル 3a
- レベル 1b
- レベル 1c
データベースでは、各レベルに ID と親 ID があり、ルート (レベル 1 の親) のすべての親 ID は 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 であることを示します。確かなことは、レベルがどれくらい深いかということです。子レベルが存在しないインスタンスもあれば、ツリーが存在するインスタンスもあります。いくつかのレベルの深さ。
私が今考えている選択肢は2つあります。1 つは、利用可能な場合は合計で各レベルのデータを表示するドリルダウン レポートを作成することです。例えば:
-Level1a SUM_LEVEL2_AND_LEVEL1a_DATA
Level2a DATA
Level2b DATA
-Level2c SUM_LEVEL3_AND_LEVEL2c_DATA
Level3a DATA
Level1b DATA
Level1c DATA
もう 1 つは、データをルートまで合計し、親の合計のみを含む単純なテーブルをレポートに表示することです。例えば:
Level1a SUM_LEVEL1A_AND_ALL_CHILDREN_DATA
Level1b SUM_LEVEL1B_AND_ALL_CHILDREN_DATA
Level1c SUM_LEVEL1C_AND_ALL_CHILDREN_DATA
私が行ったグーグルでドリルダウンレポートを機能させる方法を理解できないようです(ここには便利なリンクがありますが、機能させることができませんでした)。
データベース スキーマを変更することはできません。
始めるために使用できる優れたリソースを知っている人、またはこれを進める方法についてアイデアがある人はいますか?
何か不足している場合はお知らせください...