【问题标题】:MDX Calculated Member in where clausewhere 子句中的 MDX 计算成员
【发布时间】:2013-10-25 08:23:14
【问题描述】:

我是 MDX 查询的新手。我有以下查询,并希望将结果限制为仅显示 Margin Pct > 0 的记录。任何帮助将不胜感激。

和 MEMBER [Measures].[Margin Pct] as ([Measures].[Mgmt Margin Excluding Markup]/[Measures].[Net Sales])*100,format_string="0.0" MEMBER [Measures].[Mgmt Margin] as [Measures].[Mgmt Margin Excluding Markup],format_string="0.0" MEMBER [Measures].[Mgmt Cost Unit] as [Measures].[Mgmt Cost Unit Excluding Markup],format_string="0.00" 成员 [Measures].[FOBPrce] as [Measures].[FOB 价格],format_string="0.00" 成员 [Measures].[CommUnt] as [Measures].[Comm/Unit],format_string="0.000" 成员 [Measures].[RebUnt] as [Measures].[Reb/Unit],format_string="0.00" 成员 [Measures].[FrtUnt] as [Measures].[Frt/Unit],format_string="0.00" 成员 [Measures].[PriceUnt] as [Measures].[Price/Unit],format_string="0.00" 选择非空{ [措施].[Rpt Inv Shp Date], [措施]。[运送磅数], [措施].[净销售额], [措施]。[FOBPrce], [措施].[CommUnt], [措施]。[RebUnt], [措施].[FrtUnt], [措施].[PriceUnt], [措施].[管理成本单位], [措施].[管理保证金], [措施].[保证金百分比] } 在列上,非空 { ( [项目].[分组排序].[分组排序], [项目].[表单排序].[表单排序], [项目].[物种分类].[物种分类], {[Item].[Group thru Item ID].[Group].ALLMEMBERS}, [虾群].[虾群].[虾群名称].ALLMEMBERS , {[项目].[表格].[表格].ALLMEMBERS}, [项目].[肉 - 带壳].[肉或带壳].ALLMEMBERS , [项目].[超级物种].[超级物种].ALLMEMBERS , {[项目].[物种].[物种].ALLMEMBERS}, {[项目].[项目 ID].[项目 ID].ALLMEMBERS}, [项目].[Desc-ItemID].[项目 ID 说明].ALLMEMBERS , [项目].[包装类型].[包装].ALLMEMBERS , {[品牌].[品牌].[品牌名称].ALLMEMBERS}, {[仓库].[仓库].[仓库代码].ALLMEMBERS}, [Order Invoice Lot].[Order-Invoice-Lot].[Lot].ALLMEMBERS , {[客户账号].[客户账号].Levels(1)}, {[运送给客户].[客户名称].Levels(1)}, {[销售人员].[Person].Levels(1)}, [订单发票批次].[销售订单].[销售订单].ALLMEMBERS , [订单发票批次].[发票].[发票].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT StrToSet( '{[Breaded Group].[Breaded Group].[All]}' ,CONSTRAINED ) ON COLUMNS FROM ( SELECT StrToSet( '{[Inventory Category].[Inventory Category].[All]}' ,CONSTRAINED ) 来自 ( SELECT StrToSet( '{[Sold To Customer].[Customer Buying Group].[All]}' ,CONSTRAINED ) ON COLUMNS FROM ( SELECT StrToSet('{[Ship To Customer Sales Group].[Ship To Customer Sales Group].[All]}' ,CONSTRAINED ) ON COLUMNS FROM ( SELECT StrToSet( '{[Sold To Customer].[Customer Legal Group].[All]}' ,CONSTRAINED ) ON COLUMNS FROM ( SELECT StrToSet('{[Country Of Origin].[Long Name].[All]}' ,CONSTRAINED ) ON COLUMNS FROM ( SELECT StrToSet( '{[Is Sample].[Sample].[Description].[Regular]}' ,CONSTRAINED ) ON COLUMNS FROM ( SELECT StrToSet('{[Invoicing Status].[Invoicing Status-Detail].[Detail].[Sale Only],[Invoicing Status].[Invoicing Status-Detail].[Detail].[Credit Only]}' ,CONSTRAINED ) 从 ( SELECT StrToSet('{[Invoice Date].[Fiscal Year-Quarter-Month].[Fiscal Month].[Jul-FY13]}' ,CONSTRAINED ) 从 ( SELECT StrToSet( '{[Sold To Customer].[Name].[All]}' ,CONSTRAINED ) ON COLUMNS FROM ( SELECT StrToSet('{[Is NRV].[NRV].[All]}' ,CONSTRAINED ) 来自 [FishTrackerReporting] 的列 ) ) ) ) ) ) ) ) ) )

我尝试对 [Measures].[Margin Pct] 使用 where 子句,但出现此错误:

WHERE 子句函数需要一个元组集表达式作为参数。使用了字符串或数字表达式。

我还尝试在查询的 on columns 部分之后使用过滤器,但出现内存不足的问题,所以我认为我遗漏了一些东西。

【问题讨论】:

    标签: sql ssas mdx


    【解决方案1】:

    很遗憾,MDX 的参考不是最好的。您可以使用HAVINGFILTER 来实现您想要的。我会选择HAVING,因为它更易于使用。

    请查看here 并找到最后一个示例。

    【讨论】:

    • 看起来 having 子句可以做我想做的事。我会在我回家时检查并接受答案是否有效,谢谢:)
    • 添加了having子句,它就像一个魅力。谢谢。
    猜你喜欢
    • 2018-09-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
    相关资源
    最近更新 更多