在MDX中,如何按给定维度的count(*)进行分组?

时间:2012-07-12 11:46:33

标签: sql-server aggregate-functions mdx

在T-SQL中,我只使用group by子句和select语句中的count(*)来给出我需要的值。但是对于立方体而言它是不同的,因为计数不仅仅是行,而是维度组合。所以我用谷歌搜索答案无济于事。以下是我的问题的详细解释:

我原来的MDX是:

SELECT 
  NON EMPTY 
    {
        [Measures].[Budget]
    } ON COLUMNS
 ,NON EMPTY 
    {
        [Location].[Category - Entity - Facility].[Facility].ALLMEMBERS*
        [Location].[Category - Facility - Unit].[Location].ALLMEMBERS*
        [Calendar].[Day].[Day].ALLMEMBERS
    } ON ROWS
FROM 
(
  SELECT 
    {[Location].[Category - Entity - Facility].[Category].&[3]} ON COLUMNS
  FROM 
  (
    SELECT 
        [Calendar].[Year  -  Quarter -  Month -  Day].[Day].&[2012-01-01T00:00:00]
      : [Calendar].[Year  -  Quarter -  Month -  Day].[Day].&[2012-05-31T00:00:00]
    ON COLUMNS
    FROM [PHI Census]
  )
)

Results look like this:
    Facility 1    Location 1    Day 1    100
    Facility 1    Location 1    Day 2    100
    Facility 1    Location 1    Day 3    100
    Facility 1    Location 1    Day 4    100
    Facility 1    Location 2    Day 1    80
    Facility 1    Location 2    Day 2    80
    Facility 1    Location 2    Day 3    80
    Facility 2    Location 1    Day 1    65
    Facility 2    Location 1    Day 2    65
    Facility 2    Location 1    Day 3    65
    Facility 2    Location 1    Day 4    65
    Facility 2    Location 2    Day 1    73
    Facility 2    Location 2    Day 2    73
    Facility 2    Location 2    Day 3    73

这为我提供了每个Facility-Location-Day组合一次列出的[预算]。我想从ON ROWS子句中删除[Calendar]。[Day]。[Day] .ALLMEMBERS并简单地使用一个计算成员,该成员将返回每个Facility-Location组合以及每一行的天数。所以基本上,

The results would look like this:
    Facility      Location      Budget   DayCount
    Facility 1    Location 1    100      4
    Facility 1    Location 2    80       3
    Facility 2    Location 1    65       4
    Facility 2    Location 2    73       3

1 个答案:

答案 0 :(得分:3)

DayCount的表达可能是:

MEMBER [Measures].[DayCount] AS Count(NonEmpty([Calendar].[Day].[Day].ALLMEMBERS, [Measures].[Budget]))