Функция предложения WHERE ожидает выражение набора кортежей для аргумента. Было использовано строковое или числовое выражение

Я использую SQL Server 2008 R2 и базу данных AdventureWorks2008.

Я пишу запрос MDX в SSAS.

Я хочу отфильтровать результат запроса.

Я пишу этот запрос

SELECT 
Measures.[Internet Sales Amount] ON COLUMNS,
CROSSJOIN( 
            {Product.[Product Line].[Product Line].MEMBERS}, 
            {[Customer].[Country].MEMBERS}
         ) on ROWS 
FROM [Adventure Works] 
Where 
 ( Measures.[Internet Sales Amount] > 2000000 )

и я получаю эту ошибку

Выполнение запроса... Функция предложения WHERE ожидает выражение набора кортежей для аргумента. Было использовано строковое или числовое выражение.

Выполнение завершено

почему я получаю эту ошибку?


person Ardalan Shahgholi    schedule 03.08.2013    source источник
comment
К какой базе данных вы подключаетесь? Что это за язык? Я считаю, что это SSAS/MDX, не так ли?   -  person OzrenTkalcecKrznaric    schedule 03.08.2013
comment
я пишу, что использую sql server 2008 r2 - а это mdx запрос.   -  person Ardalan Shahgholi    schedule 03.08.2013
comment
Ну а если вы хотите привлечь внимание OLAP-аналитиков, добавьте тег MDX. Я пытался переименовать ваш вопрос, но три гения сочли это ненужным...   -  person OzrenTkalcecKrznaric    schedule 03.08.2013
comment
Вы получаете эту ошибку, потому что фильтр (предложение where) должен применяться в контексте, таком как агрегация в строках.   -  person Frank Goortani    schedule 03.08.2013
comment
видеть? Какой-то ненужный тег...   -  person OzrenTkalcecKrznaric    schedule 04.08.2013


Ответы (2)


используйте этот запрос

SELECT 
Measures.[Internet Sales Amount] ON COLUMNS,
Filter (
            CROSSJOIN( 
                        {Product.[Product Line].[Product Line].MEMBERS}, 
                        {[Customer].[Country].MEMBERS}
                     ) ,    
            ( Measures.[Internet Sales Amount] > 2000000 )       
         ) on ROWS 
FROM [Adventure Works] 
person Negar Jafarpisheh    schedule 04.08.2013

вы можете использовать то, что рекомендуется здесь.

Вот как должен выглядеть ваш код:

SELECT 
Measures.[Internet Sales Amount] ON COLUMNS,filter(
         ({Product.[Product Line].[Product Line].MEMBERS} *
            {[Customer].[Country].MEMBERS}),
            Measures.[Internet Sales Amount] > 2000000) on ROWS 
FROM [Adventure Works]
person Frank Goortani    schedule 03.08.2013