Я пытаюсь получить два разных счета в разных строках, думаю, я где-то ошибаюсь?
select{
([Measures].[Invoiced_DAm])
} on columns,
topcount(
[07 Prod].[Product_Descr].children
,10
,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2008])
),
topcount(
[07 Prod].[Product_Descr].children
,10
,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2009])
) on rows
1 ответ
Чтобы заставить его работать, просто поместите операцию TOPCOUNT между фигурными скобками { }
:
select{
([Measures].[Invoiced_DAm])
} on columns,
{
topcount(
[07 Prod].[Product_Descr].children
,10
,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2008])
),
topcount(
[07 Prod].[Product_Descr].children
,10
,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2009])
)
} on rows
Почему? Потому что именно так MDX различает наборы: мы должны заключать кортежи в фигурные скобки каждый раз, когда кортежи явно указаны в списке. Функция TOPCOUNT вернет (в данном случае) 10 верхних кортежей из измерения Product.
В вашем случае TOPCOUNT(...), TOPCOUNT(...)
ничего не значит для MDX (два набора или список кортежей, разделенных запятой).
{TOPCOUNT(...), TOPCOUNT(...)}
сообщит MDX, что вы хотите отобразить набор строк, полученных из двух операторов TOPCOUNT, поэтому вы объявляете набор наборов, который сам является набором.
Похожие вопросы
Новые вопросы
ssas
Службы аналитики SQL Server (SSAS) являются частью системы Microsoft SQL Server. Он обеспечивает функциональные возможности оперативной аналитической обработки (OLAP) и интеллектуального анализа данных. Не следует путать с синтаксически удивительными таблицами стилей (SASS).