SQL Server Analysis Services - 如何按日期过滤一个度量并在没有过滤器的情况下保留另一个度量?

时间:2016-10-05 17:05:43

标签: sql-server ssas olap measures

Hy guys!

我有以下情况:

一个具有一维和两个度量(值的总和)的立方体。我的用户想要尝试获得以下结果:

选择一个日期列,我将维度中的date1称为列标题,选择两个度量,我将在此处调用sum1和sum2。

所以它会产生类似的东西:

Set @StartDate = DATEADD (hh , -4 , Getdate() )  
Set @EndDate = Getdate()

Set @OriginatingEventName = 'WareHouseForwardFlow'

Select top 1 @OriginSystemName = OriginSystemName  From WorkFlow
Select @StepCount=count(*) from WorkFlow where OriginatingEventName=@OriginatingEventName and OriginSystemName=@OriginSystemName

;WITH Success_CTE 
    AS
    (
        Select count(*) as 'CountSteps',MessageCorrelationId 
        from Activity  
        Where OriginatingEventName=@OriginatingEventName 
        AND CreatedDate >= @StartDate  and ErrorFlag=0 Group By MessageCorrelationId
        Having  count(*) >= @StepCount
    ),
    cte_lead AS
    (
        SELECT A.MessageCorrelationId,BridgeName,ServiceName,OriginSystemName,CreatedDate,ErrorFlag,ErrorMessage,
               ROW_NUMBER() OVER (PARTITION BY A.MessageCorrelationId ORDER BY CreatedDate DESC) AS rn
            from Activity A
            Inner Join Success_CTE B On A.MessageCorrelationId = B.MessageCorrelationId
    )
    SELECT * FROM cte_lead WHERE rn = 1

并继续这样。但是有了这个结果,他想通过从这个date1列过滤掉的某个日期来过滤sum2度量,但他还想显示所有日期/ sum1值。

所以,正确的结果应该是这样的,例如,如果他过滤date1 =' 2016/02':

    date1              date1
   2016/01            2016/02
sum1     sum2      sum1      sum2
1000.00 1200.00   1100.00   1300.00

我不知道如何实现这一目标。如果有可能实现,你们能给我任何暗示吗?

1 个答案:

答案 0 :(得分:0)

您可以进行MDX计算。只需采取一个措施并将其过滤到特定的日期时间,如:

([Measure].[Name], [Date Time].[Dimension])