2016-02-15 46 views
0

我有一个查询根据CB分数执行不同的帐户计数。我遇到的问题是,帐户可以经常切换信用评分。所以我想为特定账户获得最大信用评分。 由于CB分数的转换,我得到的回报比我想要的要高。在多行上选择不同计数的最大值

因此,例如,帐户1234最初的cb分数为500,随后的cb分数为550.帐户1234现在都处于cb分数范围内,但我只想计算一次。

WITH 
    MEMBER mem1 AS 
    Count 
    (
     NonEmpty 
     (
     [AccountID].[Account ID].[Account ID].MEMBERS 
     ,measures.[Transaction Amount] 
    ) 
    ) 
SELECT 
    NON EMPTY 
    {mem1} ON 0 
,[CB Score].[RANGE].[RANGE] ON 1 
FROM [CUBE] 
WHERE [PROMO].[PROMO].&24 

回答

2

试试这个:

WITH 
    MEMBER mem1 AS 
    Sum 
    (
     [AccountID].[Account ID].[Account ID].MEMBERS 
     ,IIF(
     Not IsEmpty([Measures].[Transaction Amount]) 
     And IsEmpty(Sum({[CB Score].[RANGE].CurrentMember.NextMember : null}, [Measures].[Transaction Amount])), 
     1, 
     Null 
    ) 
    ) 
SELECT 
    NON EMPTY 
    {mem1} ON 0 
,[CB Score].[RANGE].[RANGE] ON 1 
FROM [CUBE] 
WHERE [PROMO].[PROMO].&24 

基本逻辑是,如果他们在这片,如果没有更大的CB分数范围有交易有交易来算的帐户。

+0

非常好!谢谢。 – user3266792

+0

非常好的mdx:这些结构使它比sql更有吸引力。 (道歉,我有点福音派) – whytheq