2017-03-15 46 views
0

--Total FEB-2008 SalesAmount两个MDX:除了我需要的总销售金额中某一年

SELECT 
{[Measures].[Internet Sales Amount]} ON 0, 
{[Date].[Calendar].[Month].&[2008]&[2]} ON 1 
FROM [Adventure Works] 
WHERE [Date].[Calendar Year].&[2008] 

- $ 47,868.54(对于FEB月29日SalesAmount两个)

SELECT 
{[Measures].[Internet Sales Amount]} ON 0, 
{[Date].[Calendar].[Date].&[20080229]} ON 1 
FROM [Adventure Works] 
WHERE [Date].[Calendar Year].&[2008] 

--Here如何排除FEB月29日SalesAmount两个在该年

SELECT 
    {[Measures].[Internet Sales Amount]} ON 0, 
EXCEPT(

    [Date].[Calendar].[Month], 
    {[Date].[Calendar].[Date].&[20080229]} 
) 
    ON 1 
FROM [Adventure Works] 
WHERE [Date].[Calendar Year].&[2008] 

enter image description here

回答

1

也许这:

SELECT 
    [Measures].[Internet Sales Amount] ON 0 
FROM [Adventure Works] 
WHERE 
    EXCEPT(
    DESCENDANTS(
     [Date].[Calendar].[Year].&[2008], 
     [Date].[Calendar].[Date] 
    ), 
    [Date].[Calendar].[Date].&[20080229] 
); 

或者这样:

WITH 
MEMBER [Date].[Calendar].[All].[2008minus29feb] AS 
AGGREGATE(
    EXCEPT(
    [Date].[Calendar].[Date].MEMBERS, 
    [Date].[Calendar].[Date].&[20080229]} 
) 
) 
SELECT 
    [Measures].[Internet Sales Amount] ON 0, 
    [Date].[Calendar].[All].[2008minus29feb] ON 1 
FROM 
    (
    SELECT [Date].[Calendar Year].&[2008] ON 0 
    FROM [Adventure Works] 
); 

该做的:

SELECT 
    [Measures].[Internet Sales Amount] ON 0 
,[Date].[Calendar].[Month] ON 1 
FROM 
(
    SELECT 
    Except 
    (
     Descendants 
     (
     [Date].[Calendar].[Calendar Year].&[2008] 
     ,[Date].[Calendar].[Date] 
    ) 
    ,[Date].[Calendar].[Date].&[20080229] 
    ) ON 0 
    FROM [Adventure Works] 
); 

结果:

enter image description here

+0

嗨,谢谢你回复,但结果不匹配,请你看看附带的屏幕截图。 – Yugandhar

+0

@Yugandhar ok - 截图很棒我现在明白要求 – whytheq

+0

@Yandandhar - 使用子选择我们可以做到 - 看我的编辑 – whytheq