共用方式為


建立 Query-Scoped 的命名集合(MDX)

如果具名集只需要用於單一多維度表示式(MDX)查詢,您可以使用WITH關鍵詞來定義該具名集。 使用WITH關鍵詞建立的具名集,在查詢完成執行之後已不存在。

如本主題所討論,WITH 關鍵詞的語法相當有彈性,即使是使用函式來定義命名集。

備註

如需命名集的詳細資訊,請參閱 在 MDX 中建置具名集 (MDX)

使用關鍵字語法

使用下列語法將 WITH 關鍵詞新增至 MDX SELECT 語句:

[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]   
SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ]  
FROM <SELECT subcube clause>   
[ <SELECT slicer axis clause> ]  
[ <SELECT cell property list clause> ]  
  
<SELECT WITH clause> ::=  
   ( SET Set_Identifier AS 'Set_Expression')  
  

在WITH關鍵詞的語法中, Set_Identifier 參數包含具名集的別名。 該參數 Set_Expression 包含具名集合別名所參考的集合運算式。

WITH 關鍵詞範例

下列 MDX 查詢會在 FoodMart 2000 中檢查各種 Chardonnay 和 Chablis 葡萄酒的單位銷售,這是 Microsoft SQL Server 2000 分析服務的範例資料庫。 此查詢雖然在結果集方面相當簡單,但在您必須維護這類查詢時,會顯得冗長且難以處理。

SELECT  
   {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]} ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  

若要讓先前的 MDX 查詢更容易維護,您可以使用 WITH 關鍵詞建立查詢的具名集。 下列程式代碼示範如何使用WITH關鍵詞來建立具名集, [ChardonnayChablis]以及命名集如何讓SELECT語句變得更短且更容易維護。

WITH SET [ChardonnayChablis] AS  
   {[Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chardonnay],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Good].[Good Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Pearl].[Pearl Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Portsmouth].[Portsmouth Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Top Measure].[Top Measure Chablis Wine],  
   [Product].[All Products].[Drink].[Alcoholic Beverages].[Beer and Wine].[Wine].[Walrus].[Walrus Chablis Wine]}  
  
SELECT  
   [ChardonnayChablis] ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  

搭配WITH關鍵詞使用函式

雖然您可以明確定義具名集的每個成員,但此方法可能會產生冗長的語句。 若要讓具名集的建立和維護變得更容易,您可以使用 MDX 函式來定義成員。

例如,下列 MDX 查詢範例會使用 FilterCurrentMemberName MDX 函式和 InStr VBA 函式來建立 [ChardonnayChablis] 命名集。 這個名為[ChardonnayChablis]的命名集版本與之前在本主題中顯示的明確定義版本相同。

WITH SET [ChardonnayChablis] AS  
   'Filter([Product].Members, (InStr(1, [Product].CurrentMember.Name, "chardonnay") <> 0) OR (InStr(1, [Product].CurrentMember.Name, "chablis") <> 0))'  
  
SELECT  
   [ChardonnayChablis] ON COLUMNS,  
   {Measures.[Unit Sales]} ON ROWS  
FROM Sales  
  

另請參閱

SELECT 陳述式(MDX)
建立 Session-Scoped 命名集合(MDX)