Pour tirer le meilleur parti de ces requêtes et permettre à utilisateur final d'afficher uniquement la sélection des données qui l'intéressent, comme par exemple en faisant des filtres sur une année, un produit ou une gamme, un client particulier, etc... il est nécessaire d'implémenter un maximum de fonctions dynamique dans les rapports.
De plus l'utilisation de plusieurs paramètres conjointement permet d'affiner la sélection des données.

Comment écrire différentes requêtes en fonction de paramètres, c'est à dire comment une requête dynamique sous Reporting Services ?

Pour cela il faut utiliser une requête paramétrée ou générer la requête via une expression.

La première solution (la plus facile à maintenir et à faire évoluer) est celle-ci :

SELECT * FROM TABLE1 WHERE CHAMPS = PARAMETERS!PARAMETER2.VALUE

Au préalable le paramètre PARAMETERS!PARAMETER2.VALUE serait évalué en fonction d'un premier paramètre visible et sélectionner dans une liste de choix par l'utilisateur au moment d'exécuter le rapport, comme suit : Dans les propriétés expression du paramètre PARAMETER2, insérer un code comme suit :
=IIF(Parameters!Test.value = "Valeur","CONDITION1", "CONDITION2")

Plutôt qu'utiliser une deuxième solution avec une syntaxe comme celle-ci, qui écrirait en dur les deux paramètres dans l'expression de la requête :

IF PARAMETERS!PARAMETER.VALUE = UNEVALEUR
SELECT * FROM TABLE1 WHERE CHAMPS = CONDITION1
ELSE
SELECT * FROM TABLE1 WHERE CHAMPS = CONDITION2




NB : Les rapports sous Reporting Services permettent donc de créer des paramètres qui utilisent eux-aussi des paramètres.