web-dev-qa-db-fra.com

Comment spécifier un ordre pour les colonnes d'une matrice?

Je travaille sur un rapport SQL Reporting Services (dans VS.Net 2005) qui affiche le nombre de données différentes dans une matrice. Les colonnes comptent sur le nombre de clients dans un certain ensemble. Donc, j'ai plusieurs colonnes comme celles-ci: "1 employeur", "2-9 employeurs", "10-19 employeurs" et ainsi de suite.

Le problème que j'ai est que SQL Reporting Services trie les colonnes de la matrice par ordre alphabétique. Je finis donc par avoir la colonne "10-19" après la colonne "1 employeur" mais avant le "2-9".

Est-ce qu'il y a un moyen de réparer ceci? Ou peut-être une astuce pour changer les étiquettes des colonnes pour qu'elles trient correctement?

Merci.

21
Gerrie Schenck

Nous faisons beaucoup de rapports SSRS et cela a toujours été un problème avec mdx. Voici une façon de le faire:

Définissez Tri dans le Propriétés de regroupement et de tri pour trier selon cette expression:

=iif(Fields!DataSetField.Value = "ColumnName", "zzz", Fields!DataSetField.Value)

Où "zzz" pourrait être un nombre ou tout ce dont vous avez besoin pour faciliter le tri, puis sélectionnez Direction comme base ascendante ou décroissante sur cette expression.

19
Fred Stemp

Cela peut également être fait en ajoutant une nouvelle colonne à la requête pour l'ordre de tri. Cliquez ensuite avec le bouton droit de la souris sur le groupe de colonnes de la matrice et sélectionnez les propriétés du groupe. Sur le côté gauche, sélectionnez le tri. À partir de là, vous pouvez spécifier une autre colonne à trier à la place de l'en-tête de colonne. Aucune formule personnalisée nécessaire.

19
BilliD

Cela peut paraître un peu compliqué, mais nous avons eu un problème similaire et aucun moyen de changer le code SQL. Nous avons créé un champ calculé dans l'ensemble de données, qui renvoie un nombre pour chaque colonne et trie le groupe sur ce nombre.

4
Dan Sydner

J'avais un problème similaire, mais je n'ai pas trouvé de solution utilisant une matrice à temps - j'ai donc utilisé une table - et ai mis la logique nécessaire de la matrice dans mes instructions SQL. Ce n’est pas la meilleure chose à faire, mais cela fonctionne: c’est assez rapide et il ne faut pas longtemps pour écrire.

1
Gambrinus

Pour l'ordre numérique distinct d'un tableau matriciel, utilisez la ligne de code suivante dans l'expression.

= RunningValue (CountDistinct ("VotreTableName"), Count, "VotreTableName")

0

Aller à Modifier le groupe - Tri - Modifiez le sens de descente pour l'expression.

0
Waheed

Je suis entré dans MATRIX -> PROPRIETES -> GROUPES. Ensuite, j'ai "déplacé" le GROUPE que je voulais trier par UP dans la liste. Je suis allé à PREVIEW et cela a parfaitement fonctionné. Il a même gardé l'ordre de ma colonne identique.

0
user144688