J'ai une table de hiérarchie dans SQL Server 2005 qui contient des employés -> managers -> department -> location -> state.Agrégation basée sur la hiérarchie
Table d'échantillons pour la table de hiérarchie:
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
La deuxième est table de faits qui contient les détails du salaire des employés ID et le salaire.
Données d'échantillons pour la table de fait:
ID Salary
4 6000
5 5000
7 4000
Est-il un bon moyen d'afficher à la hiérarchie de la table de la hiérarchie avec la somme agrégée de salaire en fonction des employés. Résultat attendu est comme
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
Dans mon environnement de production, table de hiérarchie peut contenir 23000+ lignes et table de faits peut contenir 300,000+ lignes. Ainsi, j'ai pensé fournir n'importe quel niveau de groupid à la requête pour récupérer seulement ses enfants et sa valeur agrégée correspondante. Une meilleure solution?