MDX 留在 SSRS 报告查询中

MDX left in SSRS report query

我想使用 LEFT() 从 SSRS 报告中过滤一些产品代码,但我遇到了问题。

这是我的查询:

FROM ( SELECT ( { [Plan type].[Plan type].&[100000002] } ) ON COLUMNS 
FROM ( SELECT ( STRTOSET(@ProducersName, CONSTRAINED) ) ON COLUMNS 
FROM ( SELECT ( STRTOSET(@CalendarTime, CONSTRAINED) )  ON COLUMNS 
FROM ( SELECT ( LEFT([Product].[Product code],3) <> 'ALE')  ON COLUMNS --codes that I want to filter out
FROM ( SELECT ( LEFT([Product].[Product code],3) <> 'DBN' )  ON COLUMNS
FROM ( SELECT ( LEFT([Product].[Product code],3) <> 'DBR' )  ON COLUMNS
FROM [Sales]))))))

问题是,我无法让它工作,因为我在那些带有产品代码的 LEFT 上遇到了一些语法错误。休息完美。 你能帮帮我吗?

请从SQL世界出来,这里是MDX。

LEFT([Product].[Product code],3) 没有意义。您需要的可能必须是 LEFT([Product].[Product code].&[foo].membername, 3)。但是您必须遍历产品代码以仅过滤符合条件的产品代码。

所以下面的 LEFT([Product].[Product code],3) <> 'ALE' 在句法上是正确的。

FILTER([Product].[Product code].MEMBERS AS prd,
       LEFT(prd.currentmember.name,3) <> 'ALE'
      )

您可以在尾随 AND 子句中包含其他条件。

......FROM(SELECT 
           FILTER([Product].[Product code].MEMBERS AS prd,
           LEFT(prd.currentmember.name,3) <> 'ALE' AND
           LEFT(prd.currentmember.name,3) <> 'DBN' AND
           LEFT(prd.currentmember.name,3) <> 'DBR'
          ) ON 0 FROM [Sales]

当然,有更多更好的方法来处理此类要求,但这只是为了说明如何在这种情况下正确进行过滤。