Crossjoin (MDX)
傳回一或多個集合的交叉乘積。
Standard syntax
Crossjoin(Set_Expression1 ,Set_Expression2 [,...n] )
Alternate syntax
Set_Expression1 * Set_Expression2 [* ...n]
Set_Expression1
傳回集合的有效多維度運算式 (MDX) 運算式。
Set_Expression2
傳回集合的有效多維度運算式 (MDX) 運算式。
Crossjoin 函 式會傳回兩個或多個指定集合的交叉乘積。 結果集中 Tuple 的順序取決於要聯結的集合順序及其成員的順序。 例如,當第一個集合包含 {x1、x2,...,x n },而第二個集合包含 {y1、y2、...、y n }時,這些集合的交叉乘積如下:
{(x1, y1), (x1, y2),...,(x1, y n ), (x2, y1), (x2, y2),...,
(x2, y n),..., (x n , y1), (x n , y2),..., (xn , y n )}
重要
如果交叉聯結中的集合是由相同維度中不同屬性階層的 Tuple 所組成,則此函式只會傳回實際存在的 Tuple。 如需詳細資訊,請參閱 MDX 中的重要概念(Analysis Services)。
下列查詢顯示查詢之 Columns 和 Rows 軸上使用 Crossjoin 函式的簡單範例:
SELECT
[Customer].[Country].Members *
[Customer].[State-Province].Members
ON 0,
Crossjoin(
[Date].[Calendar Year].Members,
[Product].[Category].[Category].Members)
ON 1
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
下列範例顯示當相同維度的不同階層交叉聯結時,所發生的自動篩選:
SELECT
Measures.[Internet Sales Amount]
ON 0,
//Only the dates in Calendar Years 2003 and 2004 will be returned here
Crossjoin(
{[Date].[Calendar Year].&[2003], [Date].[Calendar Year].&[2004]},
[Date].[Date].[Date].Members)
ON 1
FROM [Adventure Works]
下列三個範例會傳回相同的結果 - 美國境內各州的網際網路銷售金額。 前兩個使用兩個交叉聯結語法,第三個會示範如何使用 WHERE 子句傳回相同的資訊。
SELECT CROSSJOIN
(
{[Customer].[Country].[United States]},
[Customer].[State-Province].Members
) ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
SELECT
[Customer].[Country].[United States] *
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
SELECT
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE (Measures.[Internet Sales Amount],
[Customer].[Country].[United States])