2010-06-07 17 views
1

J'essaie de filtrer une requête par deux paramètres (multi-sélection).Comment: ..WHERE STRTOSET (@ p1), STRTOSET (@ p2)

Cela fonctionne très bien lorsque vous faites cela pour le premier, mais se plaint lorsque j'ajoute le second.

Est-ce que ma syntaxe est fausse est-il un meilleur moyen d'obtenir ce que je veux?

Répondre

1

MDX WHERE a très peu en commun avec SQL WHERE. MDX WHERE n'influence pas le nombre de lignes renvoyées, mais uniquement la tranche de cube à partir de laquelle les cellules doivent être récupérées.

Je voudrais utiliser la fonction de filtre depuis une MDX clause WHERE doit être un tuple (adresse de la cellule), ni plus ni moins, à savoir,

(Dim1.Member, Dim2.Member, etc.)

Espérons que cela aide.

+0

mais il fonctionne très bien pour un paramètre comme est –

+0

@adolf: droit, mais vous traitez comme un classique où et de tenter de limiter ce qui est retourné. Donc, vous auriez besoin de FILTER pour le faire. – ajdams

+0

Un FILTRE n'est-il pas seulement nécessaire lorsque l'objet en question apparaît déjà sur l'un des axes? De plus, si vous utilisez FILTER, l'utilisez-vous uniquement avec la colonne que vous voulez filtrer ou devez-vous placer toutes les colonnes de cette dimension et afficher l'expression de filtre par rapport à la colonne d'intérêt? J'ai 3 paramètres de sélection multiple (en RS) que je veux finalement filtrer par –

0

Sous-requêtes traitées?

SELECT 
    [Measures].[YourMeasure] 
ON COLUMNS, 
    [Dimensions].[YourDimension] 
ON ROWS 
FROM 

(SELECT STRTOSET(@p1) ON COLUMNS FROM 
(SELECT STRTOSET(@p2) ON COLUMNS FROM 

[YourCube])) 
+0

Notez que c'est ainsi que SSRS génère des paramètres, essayez donc de faire quelques requêtes dans le concepteur graphique puis passez en mode MDX. – Meff