我有以下查询:
SELECT
NON EMPTY { [Measures].[Mes] } ON COLUMNS,
NON EMPTY { [Dim].[Lev1].Members, [Dim].[Lev2].Members } ON ROWS
FROM [Cube]
Lev2是Lev1的等级子级。 这给了我以下结果:
Lev1 | Lev2 | Mes
_________________
yes | 1 | 1
yes | 2 | 2
no | 3 | 3
no | 4 | 4
编辑:也许这种观点更相关:
Dim | Mes
- yes | 3
1 | 1
2 | 2
- no | 7
3 | 3
4 | 4
我想要的是用Lev2 = 2或Lev2 = 4过滤Lev1以获得以下结果:
Lev1 | Mes
___________
yes | 2
no | 4
这是否可能?
我正在使用Mondran和Olap4j。
答案 0 :(得分:1)
似乎Lev1
和Lev2
是属性层次结构。由于这些可以是分开的(比如组成第一个查询的行标题的两列),您也可以在行和where轴之间拆分它们:
SELECT
NON EMPTY { [Measures].[Mes] } ON COLUMNS,
NON EMPTY { [Dim].[Lev1].Members } ON ROWS
FROM [Cube]
WHERE { [Dim].[Lev2].[2], [Dim].[Lev2].[4] }
答案 1 :(得分:0)
我认为这与FrankPI的答案实际上是一样的。虽然这可能适用于您的应用程序:
SELECT
NON EMPTY
{ [Measures].[Mes] }
ON COLUMNS,
NON EMPTY
EXISTS(
{ [Dim].[Lev1].Members }
, { [Dim].[Lev2].[2], [Dim].[Lev2].[4] }
)
ON ROWS
FROM [Cube]
也许是subselect
SELECT
NON EMPTY
{ [Measures].[Mes] }
ON COLUMNS,
NON EMPTY
EXISTS(
{ [Dim].[Lev1].Members }
, { [Dim].[Lev2].[2], [Dim].[Lev2].[4] }
)
ON ROWS
FROM
(
SELECT { [Dim].[Lev2].[2], [Dim].[Lev2].[4] } ON 0
FROM [Cube]
)
答案 2 :(得分:0)
我发现VisualTotals功能可以很好地完成工作:
SELECT
NON EMPTY {[Measures].[Mt cheques]} ON COLUMNS,
NON EMPTY VisualTotals (hierarchize({
[Dim].[Lev1].Members,
[Dim].[yes].[2],
[Dim].[no].[4]
)}) ON ROWS
FROM [Cube]
感谢您的帮助!