1

だから私は部門とサブ部門を持つテーブルを持っています。構造は次のとおりです。

COMPANYID | DIVISIONID | DIVISION | PARENTID
    1     |     1      | North    | NULL
    1     |     2      | South    | NULL
    1     |     3      | East     | NULL
    1     |     4      | West     | NULL
    1     |     5      | Sales    | 1
    1     |     6      | Service  | 1
    1     |     7      | Sales    | 2
    1     |     8      | Service  | 2
    1     |     9      | Sales    | 3
    1     |     10     | Service  | 3
    1     |     11     | Sales    | 4
    1     |     12     | Service  | 4

表の背後にある考え方は、データがこれらの部門/下位部門のすべてが同じ会社のものであることを示すということです。null の PARENTID を持つものはすべて「ディビジョン」であり、PARENTID を持つものはすべて「サブディビジョン」です。最大で 2 つのティアがあります (ディビジョン --> サブディビジョン)。このテーブルは、次の階層を作成します。

Company 1
    North
        Sales
        Service
    South
        Sales
        Service
    East
        Sales
        Service
    West
        Sales
        Service

すべての部門と下位部門を含む表を含む、会社の詳細を示す SSRS レポートを作成しようとしています。次のクエリを使用して、すべての部門と下位部門のリストを取得しています。

SELECT division, parentid
FROM division
WHERE companyid=@companyid

@companyid は、レポートのパラメーターです。私の思考プロセスは、親グループと詳細グループを持つテーブルを作成したいということです。親グループは、NULL PARENTID を持つすべての行になり、詳細グループは、PARENTID が親行の部門 ID と等しいすべての行をリストします。 . グループでそれを設定する方法がわかりません。フィルター?個別のクエリ?SQLクエリでそれを行いますか?

どんな助けでも大歓迎です!ありがとう!

4

3 に答える 3

1

目標を正しく理解した場合は、レポートに階層モードで情報を表示する必要があります。

もしそうなら、再帰階層グループを設定することでそれを達成することができます。

レポートサービスには、「ツリー」レイアウトで「階層」情報を表示する機能があります

詳細については、こちらをご覧ください

別のクエリを作成する必要はありません。最初のクエリには、CompanyIDAndが含まれていParentIDます。

于 2013-01-30T23:20:38.960 に答える
1

最大2レベルの単純な階層の場合は、テーブル自体を結合するだけです。

SELECT D1.CompanyId, D1.DivisionId, D1.Division, D2.Division AS Subdivision
FROM DivisionTable D1
INNER JOIN DivisionTable D2 ON D1.DivisionId = D2.ParentId AND D1.CompanyId = D2.CompanyId
WHERE D1.CompanyId = @CompanyId
于 2013-01-30T23:21:07.777 に答える
0

select ステートメントがデータセットとして必要なだけで、SSRS がグループ化を行うことができます。複数のレベルで階層化することも、フィルターに基づいてグループ化を折りたたんだり展開したりすることもできます。

どうやって始めるのか:

  1. 示したようにデータセットを作成します
  2. ツールボックスから表オブジェクトを入れる
  3. 詳細データの列にのみ入れる
  4. 「デザイン」レイアウトの左下にある「詳細」をクリックし、「グループを追加 > 親グループ」をクリックします。グルーピングを選択
  5. 必要に応じて、詳細列をオンデマンドで「折りたたむ」ことができます。詳細グループ化で「可視性」を選択できます。「レポートを最初に実行するとき」>「非表示」を選択します。「このレポート アイテムで表示を切り替えることができます」をチェック: 詳細を展開する対象へのセル参照を選択します。
于 2013-01-30T23:23:46.840 に答える