2016-09-26 9 views
1

私は、キューブから値を取得し、現在の日付に基づいて現在の月と現在の年のSSRSレポートを作成するクエリを作成しようとしています。私は基本的に...MDX Month To Date Date To Dateクエリ

を私は本当にこれで苦労だし、これまでのところ、これは私が作ってみたものです。このようになるはずレポート...

Type Customer Product Group Quantity Shipped MTD Quantity Shipped YTD 
===================================================================== 

OE CompanyX Bikes     5     396 
       Helmets     10    254 

    CompanyY Repair Kits    93    653 
       T-shirts     38    564 
       Shoes     10    120 

を構築しようとしています

WITH 
MEMBER [Measures].[Quantity Shipped YTD] As Sum(YTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped]) 
Member [Measures].[Quantity Shipped MTD] As Sum(MTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped]) 
SELECT NON EMPTY { [Measures].[Quantity Shipped MTD], [Measures].[Quantity Shipped YTD] } ON COLUMNS, 
NON EMPTY { ([Customer].[Business Type].[Business Type].ALLMEMBERS * [Customer].[Customer].[Customer].ALLMEMBERS * [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM (SELECT (-{ [Customer Sales].[Summary Prod Group 1].&[Missing Product Group] }) ON COLUMNS 
FROM (SELECT ({ [Customer].[Customer Code].&[2.254E3], [Customer].[Customer Code].&[2.063E3], [Customer].[Customer Code].&[2.183E3], [Customer].[Customer Code].&[2.261E3], [Customer].[Customer Code].&[5.3753E4], [Customer].[Customer Code].&[1.3084E5], [Customer].[Customer Code].&[1.37058E5] }) ON COLUMNS 
FROM (SELECT ({ [Customer].[Business Type].&[OE] }) ON COLUMNS 
FROM (SELECT ([Date].[Day].&[Now()]) ON COLUMNS 
FROM [Sales])))) WHERE ([Customer].[Customer Code].CurrentMember) 
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 

上記のクエリは何も取得しません。私が得るのは空の結果セットだけです。より多くのフィールドがありますが、仕事量を出すことができれば、他のものはすべて手に入れることができます。助けてください。あなたはWHERESELECT句に実際の日付メンバーを追加する必要がin context日付を持っている - - とのではないSELECT句のTx

+0

あなたはメンバーがいますこの ?! '[Date]。[Day]。&[Now()]' – whytheq

答えて

0

現在、あなたは、任意の日付currentmemberはあまり見つけることはありません意味in contextを持っていませんa subselect。私はこの[Date].[Day].&[Now()];があると思われる

WITH 
    MEMBER [Measures].[Quantity Shipped YTD] AS 
    Sum 
    (
     YTD([Date].[Dates].CurrentMember) 
    ,[Measures].[Quantity Shipped] 
    ) 
    MEMBER [Measures].[Quantity Shipped MTD] AS 
    Sum 
    (
     MTD([Date].[Dates].CurrentMember) 
    ,[Measures].[Quantity Shipped] 
    ) 
SELECT 
    NON EMPTY 
    { 
     [Measures].[Quantity Shipped MTD] 
    ,[Measures].[Quantity Shipped YTD] 
    } ON COLUMNS 
,NON EMPTY 
    { 
     [Customer].[Business Type].[Business Type].ALLMEMBERS* 
     [Customer].[Customer].[Customer].ALLMEMBERS* 
     [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS 
    } ON ROWS 
FROM 
(
    SELECT 
    { 
     [Customer].[Customer Code].&[2.254E3] 
    ,[Customer].[Customer Code].&[2.063E3] 
    ,[Customer].[Customer Code].&[2.183E3] 
    ,[Customer].[Customer Code].&[2.261E3] 
    ,[Customer].[Customer Code].&[5.3753E4] 
    ,[Customer].[Customer Code].&[1.3084E5] 
    ,[Customer].[Customer Code].&[1.37058E5] 
    } ON 0 
    ,{[Customer].[Business Type].&[OE]} ON 1 
    ,- 
     { 
     [Customer Sales].[Summary Prod Group 1].&[Missing Product Group] 
     } ON 2 
    FROM [Sales] 
) 
WHERE 
    [Date].[Day].&[Now()]; 

:それはVBA関数であるとして

Now()はメンバーのために珍しい名前であるが、これは本当に名前である場合は、where句にそれを移動することができます

:いないメンバーの名前とは、あなたが AdvWrksキューブで同等の strToMember

私が構築してきたものを使用して調査する必要がある場合には、動的に何かをしようとしています

それはこの返します。私は、VBA機能now()を使用して上記のダイナミックを作りたい場合は、これを実現するために必要

enter image description here

を:whytheqへ

WITH 
    MEMBER [Measures].[Key for Today] AS 
    Format 
    (
     Now() 
    ,'yyyyMMdd' 
    ) 
    MEMBER [Measures].[Today string] AS 
    '[Date].[Calendar].[Date].&[' + [Measures].[Key for Today] + ']' 
    MEMBER [Measures].[_YTD] AS 
    Aggregate 
    (
     YTD([Date].[Calendar].CurrentMember) 
    ,[Measures].[Order Quantity] 
    ) 
    MEMBER [Measures].[_MTD] AS 
    Aggregate 
    (
     MTD([Date].[Calendar].CurrentMember) 
    ,[Measures].[Order Quantity] 
    ) 
SELECT 
    { 
    [Measures].[_YTD] 
    ,[Measures].[_MTD] 
    } ON COLUMNS 
,[Product].[Category].Children ON ROWS 
FROM [Adventure Works] 
WHERE 
    StrToMember 
    (
     [Measures].[Today string] 
    ,constrained 
    ) ; 
+0

ありがとう、どうもありがとう、ありがとう!ちょっと微調整してスクリプトを動かすことができました。はい、私はそれをダイナミックにしようとしていたので、Now()関数。質問に答えることで、私がレポートに使用したコードを貼り付けます。 – GarethS

+0

@GarethSの喜び - 喜んで助けになった。 – whytheq

0

おかげで、これは私が思いついたのは...

WITH 
    MEMBER [Measures].[Key for Today] AS 
    Format 
    (
     Now() 
    ,'yyyyMMdd' 
    ) 
    MEMBER [Measures].[Today string] AS 
    '[Date].[Dates].[Day].&[' + [Measures].[Key for Today] + ']' 

    MEMBER [Measures].[Quantity Shipped MTD] AS 
    Sum 
    (
     MTD([Date].[Dates].CurrentMember) 
    ,[Measures].[Quantity Shipped] 
    ) 
    MEMBER [Measures].[Quantity Shipped YTD] AS 
    Sum 
    (
     YTD([Date].[Dates].CurrentMember) 
    ,[Measures].[Quantity Shipped] 
    ) 

SELECT NON EMPTY 
    { 
    [Measures].[Quantity Shipped MTD], 
    [Measures].[Quantity Shipped YTD] 
    } ON COLUMNS, NON EMPTY 
    { 
    [Customer].[Business Type].[Business Type].ALLMEMBERS* 
    [Customer].[Customer].[Customer].ALLMEMBERS* 
    [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS} On Rows 
From 
(
    SELECT 
    { 
     [Customer].[Customer Code].&[2.254E3] 
    ,[Customer].[Customer Code].&[2.063E3] 
    ,[Customer].[Customer Code].&[2.183E3] 
    ,[Customer].[Customer Code].&[2.261E3] 
    ,[Customer].[Customer Code].&[5.3753E4] 
    ,[Customer].[Customer Code].&[1.3084E5] 
    ,[Customer].[Customer Code].&[1.37058E5] 
    } ON 0 
    ,{[Customer].[Business Type].&[OE]} ON 1 
    ,- 
     { 
     [Customer Sales].[Summary Prod Group 1].&[Missing Product Group] 
     } ON 2 
From [Sales]) 
Where 
StrToMember 
    (
     [Measures].[Today string] 
    ,constrained 
    )