3

T-SQL では、select ステートメントで group by 句と 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

これにより、[Budget] は、Facility-Location-Day の組み合わせごとに 1 回リストされます。[Calendar].[Day].[Day].ALLMEMBERS を ON ROWS 句から削除し、施設と場所の各組み合わせの日数のカウントを各行と共に返す計算メンバーを使用するだけです。だから基本的に、

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
4

1 に答える 1

3

DayCount の式は次のようになります。

MEMBER [Measures].[DayCount] AS Count(NonEmpty([Calendar].[Day].[Day].ALLMEMBERS, [Measures].[Budget]))
于 2012-07-12T15:32:11.577 に答える