Construire requête dynamique(dynamic opérateur) dans SSRS à l'aide d'une requête complexe
Je voudrais construire une requête dynamique pour un rapport spécifique à l'aide de certains paramètres (dynamique des opérateurs).
Comment puis-je ajouter des paramètres dynamiques sans écriture/édition de l'expression?
Parce que ma requête est complexe, inclus trois tables de jointure et les agrégations je pense que cela pourrait être la cause de l'erreur.
Puis-je joindre des tables à l'intérieur d'une expression dans les propriétés du jeu de données?
SELECT a.CaseNo, a.PatientName, a.PolicyNumber,
FROM Cases a
INNER JOIN GOPs b
ON a.CaseNo = b.CaseNo
INNER JOIN Invoices d ON d.CaseNo = a.CaseNo
WHERE (a.CreatedDate >= @StartDate AND a.CreatedDate <= @EndDate +1)
Cette requête fonctionne correctement si je l'écris directement dans l'éditeur de requête. Cependant, lorsque je l'ai mis comme une expression ne fonctionne plus.
Aussi, je voudrais ajouter de la dynamique des opérateurs à cette requête. La seule solution est de le mettre comme une expression. E. g. à la fin de la requête que je veux ajouter ce qui suit:
AND FeeEuro "+ Parameters!Operator.Value + Parameters!OperatorValue.Value
quelque chose comme ça
AND FeeEuro > 200
Est-il possible de faire ce que je dois faire, si oui pouvez vous me diriger dans la bonne direction?
J'ai ajouté quelques échantillons de Ian. Puis-je utiliser une JOINTURE INTERNE, les agrégations dans l'expression ?
Cool, merci pour ça. Pouvez-vous s'il vous plaît ajouter quelques exemples de ce que
Parameters!Operator.Value
pourrait être et comment cela affecterait la dernière ligne, c'est à dire AND EWAFeeEuro ...
?l'terminer la dernière ligne doit être qqch comme ça: ET FeeEuro > 200
OriginalL'auteur michaalis | 2013-05-29
Vous devez vous connecter pour publier un commentaire.
Il existe quelques approches ici.
J'ai créé certaines des données de l'échantillon à tester:
J'ai également ajouté trois paramètres:
Date
Operator
(valeurs disponibles sont<
et>
pour mon rapport)OperatorValue
(entier)Expression à base de
Première question est pourquoi votre requête dans l'éditeur, mais non pas comme une expression?
Vous pouvez faire référence à des paramètres dans l'éditeur et SSRS transformera en fonction de vos besoins, si possible. Cela fonctionne très bien pour les paramètres de date comme vous l'avez vu, mais SSRS ne savez pas quoi faire avec le
Operator
paramètre.Lors de l'utilisation d'une expression à base de DataSet, SSRS pas de transformation à tous - il va juste essayer de mettre un string ensemble, puis les jeter cela à la Source de Données et espérer que ça marche. Cela signifie que l'expression doit s'appliquer la mise en forme/mise à jour de lui-même pour créer une requête appropriée.
La suite travaillé pour moi avec le tableau ci-dessus/paramètres:
Lorsqu'on l'applique c'est transformé en un produit de requête qui fonctionne selon les besoins.
Vous obtenez un message d'avertissement lors de l'application:
Ce sens que SSRS ne peut pas dire ce qui va être reçu avant l'exécution de la requête dynamique.
Tant que tel, vous devez configurer les colonnes avant de passer à une expression de requête.
De l'éditeur de base de
Il est difficile d'appliquer un opérateur de type de paramètre sans SQL dynamique, mais vous pouvez faire quelque chose de similaire avec un
CASE
déclaration. Cela fonctionne pour moi par le biais de l'éditeur de requête:Selon la façon dont vous le regardez, la requête est un peu plus complexe, mais il le fait d'éviter d'avoir à utiliser une expression de requête.
Les deux exemples ci-dessus ont travaillé sur ma table simple:
Les deux approches sont encore viables, comme vous ajouter plus de complexité, par exemple, plus de tables, d'agrégation, il sera toujours le même principe.
OriginalL'auteur Ian Preston