Sql server MDX将获得第一个销售金额

Sql server MDX将获得第一个销售金额,sql-server,mdx,Sql Server,Mdx,我目前正试图使用计算成员返回客户第一次销售的销售额。我正在使用一些代码,通过查看各种博客,我稍微修改了一些代码,但在以与我正在寻找的结果集一致的方式调整代码时遇到了一些问题 我正在尝试创建几个计算成员,其中一个用于返回某个特定产品的第一个订单日期,这是我所拥有的。我想现在就把那个日期记下来,并只退还当天该产品的销售额。这就是我目前遇到的问题,因为每当我将日期轴放入等式中时,除非它位于层次结构的日级别,否则CurrentMember函数将聚合到任何级别并导致一些不一致 这是我目前掌握的基本情况 W

我目前正试图使用计算成员返回客户第一次销售的销售额。我正在使用一些代码,通过查看各种博客,我稍微修改了一些代码,但在以与我正在寻找的结果集一致的方式调整代码时遇到了一些问题

我正在尝试创建几个计算成员,其中一个用于返回某个特定产品的第一个订单日期,这是我所拥有的。我想现在就把那个日期记下来,并只退还当天该产品的销售额。这就是我目前遇到的问题,因为每当我将日期轴放入等式中时,除非它位于层次结构的日级别,否则CurrentMember函数将聚合到任何级别并导致一些不一致

这是我目前掌握的基本情况

WITH
MEMBER [Measures].[DaysToDate] AS 
COUNT(NULL:[Date].[Fiscal].CURRENTMEMBER)


MEMBER [Measures].[HadSale] AS
IIF([Measures].[Product Sales]=0,NULL,[Measures].[DaysToDate])


MEMBER [Measures].[MinDate] AS
MIN(NULL:[Date].[Fiscal].CURRENTMEMBER, [Measures].[HadSale])


MEMBER [Measures].[FirstSaleDay] AS
IIF(ISEMPTY([Measures].[MinDate]), NULL,

    [Date].[Fiscal].[Day].MEMBERS.ITEM([Measures].[MinDate]).NAME)


SELECT {
    [Measures].[DaysToDate]
    ,[Measures].[HadSale]
    ,[Measures].[MinDate]
    ,[Measures].[FirstSaleDay]
    } ON 0,
[Sales Team].[Sales Team].[Customer].MEMBERS ON 1
FROM [Sales and Marketing]
如果我在前一天(这是我们的最后一个处理时间)的日级别中放入WHERE子句,则此代码将起作用。但如果我输入(比如财政季度)或列上的,这是一个高于天的级别,那么它会根据季度而不是天计算CurrentMembers,并返回不正确的天,因为[FirstSaleDay]中的项()内的通行证

我主要是在寻找一种方法来强制这些计算在日级别上运行,而不是在最终查询中传递层次结构的任何级别


任何帮助都将不胜感激。

我还没有回答您的全部问题,但既然您在结束这句话时说您主要是在寻找一种方法来强制计算成员使用您的层次结构中的“天”级别,我认为这应该对您有所帮助。这是我过去使用过的一种技术

MEMBER x As Descendants([Date].[Fiscal].CurrentMember,4,SELF).Item(0).Value
此公式首先查看您的日历,并导航到层次结构的顶部(即公式中的SELF)。然后它向下导航指定数量的级别。在我的日历中,我有四个级别,但你的级别可能不同,所以如果是,你需要调整。这是一个集合,但您可以使用.Item(0)获取第一个成员,前提是您的日历是以典型方式排序的。.Value不是必需的,但有助于测试,因为它允许您将此公式本身定义为成员