SQL Server 2005 に、従業員 -> マネージャー -> 部門 -> 場所 -> 州を含む階層テーブルがあります。
階層テーブルのサンプル テーブル:
ID Name ParentID Type
1 PA NULL 0 (group)
2 Pittsburgh 1 1 (subgroup)
3 Accounts 2 1
4 Alex 3 2 (employee)
5 Robin 3 2
6 HR 2 1
7 Robert 6 2
2 つ目は、従業員の給与詳細 ID と給与を含むファクト テーブルです。
ファクト テーブルのサンプル データ:
ID Salary
4 6000
5 5000
7 4000
従業員に基づいて集計された給与の合計を含む階層テーブルから階層を表示する方法はありますか? 期待される結果は次のようになります
Name Salary
PA 15000 (Pittsburgh + others(if any))
Pittusburgh 15000 (Accounts + HR)
Accounts 11000 (Alex + Robin)
Alex 6000 (direct values)
Robin 5000
HR 4000
Robert 4000
私の運用環境では、階層テーブルには 23000 行以上、ファクト テーブルには 300,000 行以上が含まれる場合があります。そこで、任意のレベルの groupid をクエリに提供して、その子とそれに対応する集計値だけを取得することを考えました。より良い解決策はありますか?