2010-10-27 5 views
3

Cette demande MDX fonctionne:MDX OÙ: "ET" entre plusieurs conditions

SELECT [Measures].salescount ON COLUMNS, 
[Date].[2010] ON ROWS 
FROM [SalesAnalysis] 
WHERE [Area].[Shanghai] 

Celui-ci fonctionne aussi (autre condition WHERE):

SELECT [Measures].salescount ON COLUMNS, 
[Date].[2010] ON ROWS 
FROM [SalesAnalysis] 
WHERE EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]}) 

Question: Comment est-ce que j'écris une demande avec les deux conditions?
à savoir l'état de la région et l'état du produit

J'ai essayé , et AND mais pas de chance jusqu'à présent.

Répondre

3

Je suppose que vous devez définir un ensemble au sein de votre trancheuse:

SELECT [Measures].salescount ON COLUMNS, 
[Date].[2010] ON ROWS 
FROM [SalesAnalysis] 
WHERE 
    [Area].[Shanghai] 
    * EXCEPT([Product].[All Products].Children 
      , {[Product].[All Products].[#null]}) 

Faites attention que trancheuse MDX n'est pas une SQL instruction WHERE; vous pourriez jeter un coup d'oeil à la sous-sélection de MDX à la place.

+0

Merci ça marche! Détail: parenthèse fermante manquante à la fin de la requête, vous pouvez vouloir l'ajouter. –

0
SELECT 
    [Measures].salescount ON COLUMNS, 
    [Date].[2010] ON ROWS 
FROM 
    [SalesAnalysis] 
WHERE 
    { 
     [Product].[All Products].Children, 
     [Product].[All Products].[#null] 
    } 
+0

?? La condition de Shanghai n'apparaît pas dans votre demande. –

+0

J'ai essayé quelque chose d'inspiré de votre syntaxe, mais cela ne fonctionne pas. Je ne peux pas placer mes deux conditions dans la même accolade avec une virgule, j'obtiens: Mondrian Erreur: Tous les arguments à la fonction '{}' doivent avoir la même hiérarchie. –

0

Peut-être quelque chose comme ça marcherait

 
SELECT [Measures].salescount ON COLUMNS, 
[Date].[2010] ON ROWS 
FROM [SalesAnalysis] 
WHERE 
StripCalculatedMembers(CROSSJOIN(
    {[Area].[Shangai]}, 
    EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]}))) 
1

Cela devrait produire les résultats dont vous avez besoin: (sous-sélection)

SELECT [Measures].salescount ON COLUMNS, 
[Date].[2010] ON ROWS 
FROM (SELECT [Area].[Shanghai] on 0 from [SalesAnalysis]) 
WHERE EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]}) 
+0

Apparemment, mon moteur MDX (Mondrian) n'aime pas ce sous-select: Mondrian Erreur: Erreur de syntaxe à la ligne 3, colonne 7, token '(' –

1

USE * lieu de AND ou ,. Cela fonctionne Votre bienvenue

+0

Pourriez-vous écrire toute la requête, pour clarifier les choses? ! –

0

Comme mentionné ci-dessus, vous pouvez utiliser * au lieu de ET.

Exemple:

select {[Measures].Members} ON COLUMNS, 
     {[Product].Members} ON ROWS 
     from [data_cube] 
     where {[Location].[New York] * [Time].[2015]} 

Dans votre cas, il devrait y avoir quelque chose comme ceci:

SELECT [Measures].salescount ON COLUMNS, 
[Date].[2010] ON ROWS 
FROM [SalesAnalysis] 
WHERE EXCEPT([Product].[All Products].Children, {[Product].[All Products].[#null]}) * [Area].[Shanghai] 
Questions connexes