簡體   English   中英

在 MDX 中使用 CASE 語句處理來自不同層次級別的數據

[英]Using CASE statement in MDX for data from different hierarchy level

我創建了以下層次結構:

在此處輸入圖像描述

我寫了這個特定的查詢來得到我的結果:

WITH MEMBER [Ecotassa] AS 
CASE 
   WHEN [Tempo].[Anno].CurrentMember.MemberValue = '2011' THEN '9114646'
   WHEN [Tempo].[Anno].CurrentMember.MemberValue = '2012' THEN '8787551.65'
   WHEN [Tempo].[Anno].CurrentMember.MemberValue = '2013' THEN '8435651.26'
   WHEN [Tempo].[Anno].CurrentMember.MemberValue = '2014' THEN '8917336.39'
   WHEN [Tempo].[Anno].CurrentMember.MemberValue = '2015' THEN '9465533.37'
   ELSE  NULL
END

SELECT 
{ [Measures].[Dato], [Ecotassa] } ON COLUMNS,
{ ([Tempo].[Periodo].[Mese Anno].MEMBERS) } ON ROWS

FROM [AGRO]
WHERE ([TipoMisura].[Tipo Misura].&[1], [TipoAnno].[Tipo Anno].&[2],
[TipoPeriodo].[Tipo Periodo].&[2],
[Mercato].[Mercato].&[1],
[Aziende].[Descrizione Codice Azienda].&[100 - BASF]);

我得到的結果是:

在此處輸入圖像描述

這不是我想要的結果,對於 Ecotassa,我需要得到那一年的結果。 但我得到null

我的查詢哪里出錯了?

[Tempo].[Anno].CurrentMember等於腳本中的All ,因此它在CASE語句中選擇NULL 我也很想使用[Tempo].[Periodo]作為年份和日期:而不是[Tempo].[Anno]

我還將[Measures].[y]放入 select 中,以便我們查看它是否工作正常。

所以試試這個:

WITH 
MEMBER [Measures].[y] AS 
  EXISTS(
    [Tempo].[Periodo].[Anno].members,
    [Tempo].[Periodo].CurrentMember
  ).ITEM(0).ITEM(0).Member_Caption
MEMBER [Measures].[Ecotassa] AS 
  CASE 
     WHEN [Measures].[y] = '2011' THEN '9114646'
     WHEN [Measures].[y] = '2012' THEN '8787551.65'
     WHEN [Measures].[y] = '2013' THEN '8435651.26'
     WHEN [Measures].[y] = '2014' THEN '8917336.39'
     WHEN [Measures].[y] = '2015' THEN '9465533.37'
   ELSE  NULL
  END
SELECT 
{ 
   [Measures].[Dato]
  ,[Measures].[Ecotassa]
  ,[Measures].[y] 
 } ON COLUMNS,
[Tempo].[Periodo].[Mese Anno].MEMBERS ON ROWS
FROM [AGRO]
WHERE (
   [TipoMisura].[Tipo Misura].&[1]
  ,[TipoAnno].[Tipo Anno].&[2]
  ,[TipoPeriodo].[Tipo Periodo].&[2]
  ,[Mercato].[Mercato].&[1]
  ,[Aziende].[Descrizione Codice Azienda].&[100 - BASF]
 );

測試腳本

這會返回什么?

WITH 
MEMBER [Measures].[EcotassaTEST] AS 
  [Tempo].[Anno].CurrentMember.MemberValue

SELECT 
{ [Measures].[Dato], [EcotassaTEST] } ON COLUMNS,
{ ([Tempo].[Periodo].[Mese Anno].MEMBERS) } ON ROWS

FROM [AGRO]
WHERE ([TipoMisura].[Tipo Misura].&[1], [TipoAnno].[Tipo Anno].&[2],
[TipoPeriodo].[Tipo Periodo].&[2],
[Mercato].[Mercato].&[1],
[Aziende].[Descrizione Codice Azienda].&[100 - BASF]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM