SELECT
{[Measures].[Imports - Tons]
, [Measures].[Imports - Metric Tonnes]
, [Measures].[Import Customs Value] } ON COLUMNS,
{CROSSJOIN (
[Date].[Month Year].members
,[Country].[Country Name].members
,[Steel Mill Product].[Steel Mill Product Name].[Plates-Cut Length]
,[Concordance].[HTS 10 Digit Code].members) }
ON ROWS
FROM [AISISteel]
WHERE ([Date].[Year].[2014], [Concordance].[HTS 2 Digit Code].[72])
我有这个 MDX 查询。
我想取回所有这些数据,但只取回 Import-Tons>0 的数据。我该怎么做?
最佳答案
您可以尝试使用FILTER
功能:
SELECT
{[Measures].[Imports - Tons]
, [Measures].[Imports - Metric Tonnes]
, [Measures].[Import Customs Value] } ON COLUMNS,
FILTER(
{CROSSJOIN (
[Date].[Month Year].members
,[Country].[Country Name].members
,[Steel Mill Product].[Steel Mill Product Name].[Plates-Cut Length]
,[Concordance].[HTS 10 Digit Code].members) }
, [Measures].[Imports - Tons] > 0
)
ON ROWS
FROM [AISISteel]
WHERE ([Date].[Year].[2014], [Concordance].[HTS 2 Digit Code].[72])
此外,很少使用的 HAVING
子句也是您的一个可能选择
SELECT
{[Measures].[Imports - Tons]
, [Measures].[Imports - Metric Tonnes]
, [Measures].[Import Customs Value] }
ON COLUMNS,
{CROSSJOIN (
[Date].[Month Year].members
,[Country].[Country Name].members
,[Steel Mill Product].[Steel Mill Product Name].[Plates-Cut Length]
,[Concordance].[HTS 10 Digit Code].members) }
HAVING [Measures].[Imports - Tons] > 0
ON ROWS
FROM [AISISteel]
WHERE ([Date].[Year].[2014], [Concordance].[HTS 2 Digit Code].[72])
另外,为了简洁起见,还有一个几乎总是首选的 CROSSJOIN
函数的快捷方式:
SELECT
{[Measures].[Imports - Tons]
, [Measures].[Imports - Metric Tonnes]
, [Measures].[Import Customs Value] }
ON COLUMNS,
{[Date].[Month Year].members*
[Country].[Country Name].members*
[Steel Mill Product].[Steel Mill Product Name].[Plates-Cut Length]*
[Concordance].[HTS 10 Digit Code].members}
HAVING [Measures].[Imports - Tons] > 0
ON ROWS
FROM [AISISteel]
WHERE ([Date].[Year].[2014], [Concordance].[HTS 2 Digit Code].[72])
编辑
如果将上面的内容与下面的内容进行比较,执行时间是否有很大不同?
SELECT
{[Measures].[Imports - Tons]
, [Measures].[Imports - Metric Tonnes]
, [Measures].[Import Customs Value] } ON COLUMNS,
FILTER(
NONEMPTY(
[Date].[Month Year].members*
[Country].[Country Name].members*
[Steel Mill Product].[Steel Mill Product Name].[Plates-Cut Length]*
[Concordance].[HTS 10 Digit Code].members
,[Measures].[Imports - Tons]
)
,[Measures].[Imports - Tons] > 0
)
ON ROWS
FROM [AISISteel]
WHERE ([Date].[Year].[2014], [Concordance].[HTS 2 Digit Code].[72])
关于sql - 在 MDX 查询上添加过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283552/