4 votes

SSRS comptage récursif - comment obtenir des agrégats uniquement pour les enfants et non pour le parent ?

Avis de non-responsabilité : Je suis un n00b SSRS, donc pas trop de tomates pourries s'il vous plaît :)

J'ai une hiérarchie d'employés et de managers que j'ai fait construire par Reporting Services à l'aide de l'outil de gestion de l'information. Propriété Recursive Parent . Voici une représentation grossière :

-Jim Bob
   Ray
  -Steve
     Ricky Bobby
     Terry

Par exemple, j'ai besoin d'un compte des personnes sous Steve, mais quand j'appelle Count(Fields!EmployeeID.Value, "Details", Recursive) Je reçois 3 au lieu de 2 . Bien sûr, je peux simplement soustraire 1 dans le cas d'un comptage, mais cela ne fonctionnera pas si j'ai besoin d'une somme. La vraie question est donc comment obtenir un agrégat récursif qui exclut le parent ?

Informations supplémentaires : Je n'ai qu'un seul groupe qui est le groupe Détails par défaut. Il est configuré comme suit cet exemple donc je regroupe par EmployeeID et j'ai le parent récursif défini sur ManagerID.


Mise à jour

J'ai essayé quelques solutions de contournement sans succès :

  • L'ajout d'une ligne à l'intérieur du groupe donne les mêmes résultats car elle se trouve toujours dans la même portée que l'autre ligne de détail.
  • L'ajout d'un sous-total ne fonctionne pas car il se trouve en dehors du groupe de détails et n'est donc rendu qu'une fois au lieu d'une fois par gestionnaire.

Des idées ?

1voto

Frank Pearson Points 561

Vous pourriez envisager plusieurs choses.

1) vous pourriez fournir des comptes dans la requête SQL qui fournit le rapport, et ensuite simplement le rapporter pour chaque groupe en utilisant

      =FIRST(Fields!FieldThatHasCount.Value).

2) Vous pouvez peut-être utiliser le bloc de code de votre rapport pour appeler itérativement une fonction, en augmentant le nombre d'une variable partagée ou en effectuant une sorte d'arithmétique entre les sections parentales et les sections enfantines pour refléter le nombre lorsque votre rapport est présenté. Je sais que j'ai rencontré des complications avec cette approche en fonction de la version de SSRS et du niveau de complexité, d'imbrication, de sous-rapports, etc. de votre rapport.

0voto

Dan Randolph Points 91

comment obtenir un agrégat récursif Sum qui exclut le parent ?

Cela devrait fonctionner puisque vous avez toujours accès à la valeur du champ actuel.

=Sum(Fields!EmployeeSalary.Value, "Details", Recursive) - Fields!EmployeeSalary.Value

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X