2012-07-12 44 views
3

在T-SQL中,我只是在select語句中使用group by子句和count(*)來爲我提供所需的值。但與立方體不同,因爲計數不僅僅是行,而是尺寸組合。所以我一直在尋找答案無濟於事。這裏是我的問題的詳細解釋:在MDX中,對於給定的維度,如何通過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 

這給了我[經濟]每個設施地點天聯合列出一次。我想從ON ROWS子句中刪除[日曆]。[日期]。[日期] .ALLMEMBERS,並簡單地使用計算成員,該計算成員將返回每個設施 - 位置組合以及每行的天數的計數。所以基本上,

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 

回答

3

DAYCOUNT的表達可能是:

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

我已經試過這個解決方案,但它不給我,我期待的結果。例如,我有一個設施在121天內有1個位置,在31天內有兩個位置。我期望看到三排,第一排的DayCount有121個,另外兩個排在DayCount排第31排。我所看到的是我的第一個位置有16行,其他位置各有2行,而DayCount的每行都有不同的總數。 – 2012-07-13 13:01:39

+0

也許這並不是根據我在FROM ...中定義的日期範圍計算天數? – 2012-07-13 13:03:24

+0

排除不在您的子選擇中的日子。你可以用下面的表達式來檢查它:''SetToStr([Calendar]。[Day]。[Day] .ALLMEMBERS)''。您可以嘗試使用Where關閉來替換您的子選擇。 – Benoit 2012-07-13 13:53:43

相關問題