使用 MDX 将多个值传递给 SSRS

Passing multiple values to SSRS using MDX

我是运行获取多值报告的以下命令

StrToSet
("[Dim Branch].[HierarchyB-T-C].[Trading Code].&[" + 
Replace(
Join(
Parameters!TradingName.Value,"],"
) +"]",",",",[Dim Branch].[HierarchyB-T-C].[Trading Code].&["),",")

但是我遇到了一个错误

'The Syntax for 'Join' is incorrect'.

我不知道我做错了什么。有人可以纠正我吗?

如果我将其更改为 StrToSet(@TradingName, Constrained) 它适用于单个值,但我想传递多个值。

需要花括号组吗?我在下面的开头添加了一个......有点不确定你的字符串的结尾在哪里 - 它是否像这样结束 .&["?!

StrToSet(
   "{[Dim Branch].[HierarchyB-T-C].[Trading Code].&[" 
   + 
   Replace(
      Join(Parameters!TradingName.Value,"],") + "]"
    , ","
    , ",[Dim Branch].[HierarchyB-T-C].[Trading Code].&["
   )
   ,","
 )

如果 Parameters!TradingName.Value 等于这种格式的字符串 MEC,RSA 那么可能不需要 join:

StrToSet(
  "{" 
  +
  Replace(
    "[Dim Branch].[HierarchyB-T-C].[Trading Code].&[" 
    + 
    Parameters!TradingName.Value
   , ","
   ,"],[Dim Branch].[HierarchyB-T-C].[Trading Code].&["
  )
  +
  "]}"
 ,constrained)

要从参数传递多个值,我只是按照以下步骤操作 1 添加参数并命名为

  1. 在数据集属性(以及共享数据集属性)下,参数选项卡这样写一个表达式 =Split(参数!TradingName.Value,",")

  1. 在共享数据集中,使用 WHERE (StrToSet(@TradingName))
  2. 写入 MDX

SELECT 
     {[Total]} ON COLUMNS 
 ,
  {
 [Dim Account].[Account Type].&[Income] 
 }
 *
    STRTOMEMBER("[Dim Fiscal Year].[HierarchyFiscal].[E Month].&[" + @FiscalYear +"]&[" + FORMAT(Now(),"MMMM") +"].PREVMEMBER")  
 *
  ORDER
  (
  {
  [Dim Branch].[Branch Name].[Branch Name]
  },[Total], BDESC
  )
  ON ROWS
from [CubeProfitLoss]
WHERE (StrToSet(@TradingName))

  1. 当您想预览多个值时,请确保您同样使用 , 来分隔交易名称