我还在学习MDX,我想进行一个相当复杂的(?)查询。我找到了Date
和Open hour time
的每个组合,其中有任何销售使用:
SELECT NON EMPTY
{
[Measures].[Quantity]
} ON COLUMNS,
NON EMPTY
{
(
[Dim Date].[Calender].[Date].ALLMEMBERS
,[Dim Time].[Open Hour Bucket].[Open Hour Bucket].ALLMEMBERS
)
} ON ROWS
FROM
( SELECT
(
{
(
[Dim Store2].[Store Name].&[ActualStoreName]
,[Dim Date].[Calender].[2014]
)
}
) ON COLUMNS
FROM [iceCube]
)
我的结果集就像这样:
Quantity
2014-11-07 11:00 - 11:59 1
2014-11-07 12:00 - 12:59 10
2014-11-08 11:00 - 11:59 3
2014-11-08 12:00 - 12:59 2
2014-11-10 13:00 - 13:59 1
这个阶段我想要的是什么。但是,从上面的结果集中得到平均值,如下所示:
Average
11:00 - 11:59 2
12:00 - 12:59 6
13:00 - 13:59 1
是一个连接,我不明白我将如何进行。
我想找到2014年的平均销售额,因为我想在SSRS中使用特定周的销售额作为SSRS中的柱形图创建图表,同时将2014年的平均销售额作为单独的一行。这也使事情变得复杂,因为我需要第一个查询(虽然是一周的,而不是现在的2014年),以及2014年在相同数据集中的平均值,我不知道该怎么做。
我认为查找每个2014年的平均销售量的查询必须以SSAS
作为计算度量进行,然后在SSRS
我可以尝试查找本周的销售额和平均值2014年在同一数据集中以某种方式。
有人对此有任何想法吗?
此致
修改
运行GregGalloway的答案我得到了这个输出:
Quantity YearlyHourAvg
2014-01-01 09:00-09:59 (null) #Error
2014-01-01 10:00-10:59 (null) #Error
. . . .
. . . .
. . . .
2014-12-31 21:00-21:59 (null) #Error
(其中斑点表示它继续像行一样继续),即查询给出从1月1日到1月的每个Open Hour Bucket
值。
当我尝试运行查询时,它实际上仅使用With MEMBER AS...
和原始查询。 然而在[Measures].[YearlyHourAvg]
子句中添加Select
会导致这些问题。
我目前正在SSRS
和SSMS
中测试此查询。
EDIT2
也许我在原帖中并不清楚,但我需要平均值基于per *time interval*
,而不是基于per time *and* date
。即我需要平均时间跨度09:00-09:59
,10:00-10:59..
。
答案 0 :(得分:1)
尝试以下方法。它应该添加一个新列,这是整个2014年中该小时的平均值。平均值应该是每天平均值,在该小时内有任何销售额。如果你想要一个简单的平均值到2014年的天数,请回信,我们可以讨论。如果您对我所做的更改有疑问,请询问。
WITH
MEMBER [Measures].[YearlyHourAvg] as
Avg(
Descendants(
[Dim Date].[Calender].[2014],
[Dim Date].[Calender].[Date]
),
[Measures].[Quantity]
)
SELECT
{
[Measures].[Quantity],
[Measures].[YearlyHourAvg]
} ON COLUMNS,
NonEmpty(
{
(
[Dim Date].[Calender].[Date].ALLMEMBERS
,[Dim Time].[Open Hour Bucket].[Open Hour Bucket].ALLMEMBERS
)
} ,
[Measures].[Quantity]
)
ON ROWS
FROM
( SELECT
(
{
(
[Dim Store2].[Store Name].&[ActualStoreName]
,[Dim Date].[Calender].[2014]
)
}
) ON COLUMNS
FROM [iceCube]
)