在带有 T-SQL 的 MDX 中使用 ORDER 函数
Using ORDER function in MDX with T-SQL
我使用 T-SQL 在 MDX 中为 OLAP 多维数据集创建了查询,现在我需要按第二列对数据进行排序。默认 table 按第一列排序。如何按 "Income" 值排序?这是我的查询:
WITH
MEMBER [Measures].[DateFilter] AS
Cdate([Date.H_Date].CurrentMember.MemberValue)
MEMBER [Measures].[Average] AS
[Measures].[Price] / [Measures].[Covers SUM]
SELECT
{
[Measures].[Average]
,[Measures].[Covers SUM]
,[Measures].[Price]
}
DIMENSION PROPERTIES
[MEMBER_UNIQUE_NAME]
,[MEMBER_CAPTION]
ON COLUMNS
,NON EMPTY
Filter
(
NonEmpty
(
CrossJoin
(
[Date].[H_Date].[Month].ALLMEMBERS
,[Waiter].[WaiterName].[WaiterName].ALLMEMBERS
)
,{
[Measures].[Average]
,[Measures].[Covers SUM]
,[Measures].[Price]
}
)
,
Dateadd
("m"
,-1
,Dateadd
("m"
,Datediff
("m"
,Cdate(36526)
,Now()
)
,Cdate(36526)
)
)
<=
[Measures].[DateFilter]
AND
[Measures].[DateFilter]
<
Dateadd
("m"
,0
,Dateadd
("m"
,Datediff
("m"
,Cdate(36526)
,Now()
)
,Cdate(36526)
)
)
)
DIMENSION PROPERTIES
[MEMBER_UNIQUE_NAME]
,[MEMBER_CAPTION]
ON ROWS
FROM [YouCube];
顺便说一下,我按日期使用过滤函数,这让我的查询有点复杂,所以我无法按 "Income" 值添加排序函数。
只需将 ORDER 添加到您的集合中。
ORDER(
Filter(NonEmpty(CROSSJOIN([Date].[H_Date].[Month].AllMembers,
[Waiter].[WaiterName].[WaiterName].AllMembers),
{[Measures].[Average],[Measures].[Covers SUM],[Measures].[Price]}),
DATEADD("m",-1,DATEADD("m",DATEDIFF("m",CDate(36526),NOW()),CDate(36526))) <= [Measures].[DateFilter] AND [Measures].[DateFilter] < DATEADD("m",0,DATEADD("m",DATEDIFF("m",CDate(36526),NOW()),CDate(36526))))
,[Measures].[Income])
我使用 T-SQL 在 MDX 中为 OLAP 多维数据集创建了查询,现在我需要按第二列对数据进行排序。默认 table 按第一列排序。如何按 "Income" 值排序?这是我的查询:
WITH
MEMBER [Measures].[DateFilter] AS
Cdate([Date.H_Date].CurrentMember.MemberValue)
MEMBER [Measures].[Average] AS
[Measures].[Price] / [Measures].[Covers SUM]
SELECT
{
[Measures].[Average]
,[Measures].[Covers SUM]
,[Measures].[Price]
}
DIMENSION PROPERTIES
[MEMBER_UNIQUE_NAME]
,[MEMBER_CAPTION]
ON COLUMNS
,NON EMPTY
Filter
(
NonEmpty
(
CrossJoin
(
[Date].[H_Date].[Month].ALLMEMBERS
,[Waiter].[WaiterName].[WaiterName].ALLMEMBERS
)
,{
[Measures].[Average]
,[Measures].[Covers SUM]
,[Measures].[Price]
}
)
,
Dateadd
("m"
,-1
,Dateadd
("m"
,Datediff
("m"
,Cdate(36526)
,Now()
)
,Cdate(36526)
)
)
<=
[Measures].[DateFilter]
AND
[Measures].[DateFilter]
<
Dateadd
("m"
,0
,Dateadd
("m"
,Datediff
("m"
,Cdate(36526)
,Now()
)
,Cdate(36526)
)
)
)
DIMENSION PROPERTIES
[MEMBER_UNIQUE_NAME]
,[MEMBER_CAPTION]
ON ROWS
FROM [YouCube];
顺便说一下,我按日期使用过滤函数,这让我的查询有点复杂,所以我无法按 "Income" 值添加排序函数。
只需将 ORDER 添加到您的集合中。
ORDER(
Filter(NonEmpty(CROSSJOIN([Date].[H_Date].[Month].AllMembers,
[Waiter].[WaiterName].[WaiterName].AllMembers),
{[Measures].[Average],[Measures].[Covers SUM],[Measures].[Price]}),
DATEADD("m",-1,DATEADD("m",DATEDIFF("m",CDate(36526),NOW()),CDate(36526))) <= [Measures].[DateFilter] AND [Measures].[DateFilter] < DATEADD("m",0,DATEADD("m",DATEDIFF("m",CDate(36526),NOW()),CDate(36526))))
,[Measures].[Income])