我在OLAP数据库(SSAS 2012)中有多维数据集,其中[人员],[日期](订单日期),[类别](订单中的项目类别)是维度和[订单],[订单类别]是事实表。 [OrdersCategories]是用于将订单与类别连接的多对多表。
使用查询:
SELECT
{[Measures].[Orders Distinct Count]} ON COLUMNS,
{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE (
{[Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]},
{[Categories].[Id].&[10], [Categories].[Id].&[11]}
)
我可以计算每个人的订单数量(指定的时间段和指定的类别)。这种情况是否按类别起作用,如“OR”条件,无论顺序与第一类别或第二类别或两者都有关系。
是否可以按条件写条件查询条件类似于'AND'条件,即仅当订单与两个类别相关时才计算订单?
答案 0 :(得分:2)
AND
通常如下所示实现:
SELECT
{[Measures].[Orders Distinct Count]} ON COLUMNS
,{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE
Exists
(
Exists
(
{
[Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]
}
,{[Categories].[Id].&[10]}
,"MeasuresGroupName"
)
,{[Categories].[Id].&[11]}
,"MeasuresGroupName"
);
您需要从多维数据集添加度量值组名称。度量组名称对应于Measures层次结构中的文件夹名称 - Adventure Works中的示例为"Internet Sales"
可能的替代方案
我认为您可以尝试使用嵌套的NonEmpty
函数实现上述功能:
SELECT
{[Measures].[Orders Distinct Count]} ON COLUMNS
,{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE
NonEmpty
(
NonEmpty
(
{
[Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]
}
,{([Categories].[Id].&[10],[Measures].[Orders Distinct Count])}
)
,{([Categories].[Id].&[11],[Measures].[Orders Distinct Count])}
);