Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何编写MDX查询以获取分组结果_Sql Server_Mdx_Olap_Saas - Fatal编程技术网

Sql server 如何编写MDX查询以获取分组结果

Sql server 如何编写MDX查询以获取分组结果,sql-server,mdx,olap,saas,Sql Server,Mdx,Olap,Saas,我有一个数据集,其中数据是聚合的,我需要的是每个2位邮政编码的记录数 附图显示了我的多维数据集层次结构和度量 我应用了如下查询: WITH MEMBER [Measures].NoOfConsignments as Count(([Consignment].[Target Address Name].[Target Address Name])) select filter([Consignment].[Distribution Area].[Zip2], [Consignment].[Dist

我有一个数据集,其中数据是聚合的,我需要的是每个2位邮政编码的记录数

附图显示了我的多维数据集层次结构和度量

我应用了如下查询:

WITH MEMBER [Measures].NoOfConsignments as Count(([Consignment].[Target Address Name].[Target Address Name]))
select filter([Consignment].[Distribution Area].[Zip2], [Consignment].[Distribution Area].[Target Address Country] = "94") on rows,
{[Measures].NoOfConsignments} on columns
from [RebellOlap]
where ({[Consignment].[Distribution Area].[Target Address Country].&[94]})
但这是一个错误:

分布区域层次结构已出现在Axis1轴中

我以以下方式重新构造和制定了以下子选择查询:

WITH MEMBER [Measures].NoOfConsignments as Count(([Consignment].[Target Address Name].[Target Address Name]))
Select
NON EMPTY [Measures].NoOfConsignments on columns,
NON EMPTY [Consignment].[Distribution Area].[Zip2] on rows
FROM  ( 
    SELECT {[Consignment].[Distribution Area].[Zip2],[Consignment].[Distribution Area].[Target Address Country].&[94]}
    FROM [RebellOlap] 
   )
但它也给了我“模糊错误”

我所需要的全部输出如下

编辑

所有在德国的货物

所有在德国托运的货物都有特定的邮政编码


根据您的编辑,我觉得以下内容应该适合您:

WITH MEMBER Measures.NumConsignment as
COUNT
     (
      NonEmpty
             (
              [Consignment].[Target Address Name].[Target Address Name].MEMBERS, 
              ([Consignment].[Distribution Area].CURRENTMEMBER, Measures.[Num. Consignments])
             )
     )

SELECT [Consignment].[Distribution Area].[Zip2].MEMBERS on 1,
Measures.NumConsignment ON 0
FROM 
(
 SELECT [Consignment].[Distribution Area].[Target Address Country].&[94] ON 0
 FROM [RebellOlap]
)
虽然代码的其余部分相当标准,但有一部分可能需要解释

      NonEmpty
             (
              [Consignment].[Target Address Name].[Target Address Name].MEMBERS, 
              ([Consignment].[Distribution Area].CURRENTMEMBER, Measures.[Num. Consignments])
             )

这将返回当前邮政编码的一组目标地址,对于这些地址,托运数量不是空的,即0。我刚刚对所有邮政编码应用了筛选器,并使用“筛选器表达式”将范围作为运算符引入,结果成功了

SELECT NON EMPTY { [Measures].[ConsignmentCount] } ON COLUMNS, 
NON EMPTY { ([Consignment].[Distribution Area].[Zip2].ALLMEMBERS ) } ON ROWS 
FROM ( SELECT ( [Consignment].[Distribution Area].[Zip2].&[94]&[0]&[01] : [Consignment].[Distribution Area].[Zip2].&[94]&[9]&[99] ) ON COLUMNS 
FROM [RebellOlap])

为什么不使用预定义的度量值Num.commissions?不,这里是针对特定客户的Num.commissions[寄售.目标地址.目标地址],并且在特定邮政编码区域有100个客户或目标地址。所以,我想要的是38->150,54->300等特定邮政编码的托运货物,38邮政编码,有多个对应的客户和其他汇总/聚合数据请参见我的编辑…这将有助于理解我需要的内容。它返回输出,但与每个邮政编码对应,它有一个输入错误,错误描述为:CURRENTMEMBER函数要求1参数使用层次结构表达式。使用了一个成员表达式。哎呀!更正。现在尝试。不,在尝试修改后,它会给我相同的错误,但我对我的答案应用了查询,它会给我正确的结果。之前我错误地应用了CURRENTMEMBER函数。它被纠正了。我很惊讶它仍然抛出同样的错误。但很高兴你找到了解决方案。你的解决方案与你在问题中所指定的相矛盾。为什么所有的国家都包括在这里?很抱歉,这个CountryId将从代码中输入,例如CountryId=94