【问题标题】:MDX left in SSRS report queryMDX 留在 SSRS 报告查询中
【发布时间】:2016-06-09 07:03:07
【问题描述】:

我想使用 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 我不明白 - 为什么你有 6 个 COLUMNS 轴?
  • @whytheq - 我猜你还是想通了 - 这些是嵌套的子选择。

标签: reporting-services sql-server-2012 mdx olap


【解决方案1】:

请脱离 SQL 世界,这是 MDX。

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

所以下面的不是LEFT([Product].[Product code],3) &lt;&gt; '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]

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

【讨论】:

  • (upped) 不错的一个 - 其他条件是否也会进入子选择:所以也许在单个子选择中使用轴 0 到 3?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多