我正在使用Visual Studi和Management Sql Server Studio学习MDX和OLAP。实际上我做了一个立方体“销售”
我试着得到“每个产品和年份销售额最高的员工”,我写了
With MEMBER measures.[Maximun Sales] AS
MAX(([Product].[ProductName].[ProductName],[Employee].[Geography]. [Employee]), [Measures].[Sales Amount])
MEMBER measures.[EmpLoyee] AS TOPCOUNT(([Product].[ProductName]. [ProductName], [Employee].[Geography].[Employee]), 1, [Measures].[Sales Amount]).ITEM(0).NAME
SELECT { measures.[Maximun Sales], MEASUREs.[EmpLoyee]} ON COLUMNS,
([Product].[ProductName].[ProductName], [Order Date].[Calendar].[Year]) ON ROWS
FROM SALES
但是查询不起作用。拜托,有人可以帮助我吗?谢谢
答案 0 :(得分:0)
这对初学者来说并不是最容易理解的。我在Adventure Works多维数据集中提供了一个示例。此查询按产品和年份的每个组合显示销售额的最高客户,这与您询问的内容类似,您可以希望对其进行调整。
SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
, NON EMPTY
GENERATE
(
{
[Product].[Product].[Product].MEMBERS
* [Date].[Calendar Year].[Calendar Year].MEMBERS
}
, (
[Product].[Product].CURRENTMEMBER
, [Date].[Calendar Year].CURRENTMEMBER
)
* TOPCOUNT
(
[Customer].[Customer].[Customer].MEMBERS
, 1
, [Measures].[Internet Sales Amount]
)
)
ON ROWS
FROM
[Adventure Works]
如何运作
您认为TopCount功能会对您有所帮助。我们希望按产品/年度的销售额获得前1名客户。
因此,我们的Top Count功能通过销售获得了我们的前1名客户。我们如何将其应用于每个产品/年份?这是Generate功能有用的地方。这将在所有产品/年度组合中应用我们的前1客户功能。
您可以将Generate函数的工作方式视为:
1)获取Product / Year的每个组合
2)一次获得一个组合
3)对于每个组合,按销售额获得前1名客户
4)转到下一个组合