SQL Server 2008數(shù)據(jù)庫學(xué)習(xí)筆記之MDX查詢示例
作者:邀月
本文我們主要介紹了SQL Server 2008數(shù)據(jù)庫學(xué)習(xí)筆記之MDX查詢,并通過一個(gè)實(shí)例對(duì)其進(jìn)行說明,希望本次的介紹能夠?qū)δ兴鶐椭?/div>
SQL Server 2008數(shù)據(jù)庫學(xué)習(xí)筆記之MDX查詢示例是本文我們主要要介紹的,我們首先介紹了SQL查詢與MDX查詢示例比較,然后介紹了MDX的實(shí)例,接下來就讓我們一起來了解一下這部分內(nèi)容吧。
SQL查詢與MDX查詢示例比較
在MdxStepByStep數(shù)據(jù)庫中(后綴名為.SQL)查詢
- USE MdxStepByStep
- SELECT
- m.EnglishProductName, o.TotalSalesAmount
- FROM dbo.DimProduct m
- INNER JOIN ( -- TOP 10 PRODUCTS OF 2003
- SELECT TOP 10
- a.ProductKey, SUM(a.SalesAmount) AS TotalSalesAmount
- FROM (
- SELECT
- x.productkey, x.salesamount
- FROM dbo.FactInternetSales x
- INNER JOIN dbo.DimDate y
- ON x.OrderDateKey=y.DateKey
- WHERE y.CalendarYear=2003
- UNION ALL
- SELECT
- x.productkey, x.salesamount
- FROM dbo.FactResellerSales x
- INNER JOIN dbo.DimDate y
- ON x.OrderDateKey=y.DateKey
- WHERE y.CalendarYear=2003
- ) a
- GROUP BY a.ProductKey
- ORDER BY TotalSalesAmount DESC
- ) n
- ON m.ProductKey=n.ProductKey
- LEFT OUTER JOIN ( --PRODUCT SALES IN 2004
- SELECT
- a.ProductKey, SUM(a.SalesAmount) AS TotalSalesAmount
- FROM (
- SELECT
- x.productkey, x.salesamount
- FROM dbo.FactInternetSales x
- INNER JOIN dbo.DimDate y
- ON x.OrderDateKey=y.DateKey
- WHERE y.CalendarYear=2004
- UNION ALL
- SELECT
- x.productkey, x.salesamount
- FROM dbo.FactResellerSales x
- INNER JOIN dbo.DimDate y
- ON x.OrderDateKey=y.DateKey
- WHERE y.CalendarYear=2004
- ) a
- GROUP BY a.ProductKey
- ) o
- ON m.ProductKey=o.productkey
- ORDER BY n.TotalSalesAmount DESC
- /*
- EnglishProductName TotalSalesAmount
- Mountain-200 Black, 38 1327957.4077
- Mountain-200 Black, 42 1139429.4872
- Mountain-200 Silver, 38 1136622.4928
- Mountain-200 Black, 46 1011074.3685
- Mountain-200 Black, 38 NULL
- Mountain-200 Silver, 42 1011486.1762
- Touring-1000 Blue, 60 835290.1559
- Road-350-W Yellow, 48 897217.9635
- Mountain-200 Silver, 46 1029170.7639
- Road-350-W Yellow, 40 840970.6467
- */
而在維度數(shù)據(jù)庫中對(duì)應(yīng)的MDX查詢(后綴名為.MDX)如下:
- WITH
- MEMBER [Measures].[Total Sales Amount] AS
- ([Measures].[Internet Sales Amount]) + ([Measures].[Reseller Sales Amount])
- SET [Top 10 Products of 2003] AS
- TOPCOUNT(
- {[Product].[Product].[Product].Members},
- 10,
- ([Measures].[Total Sales Amount], [Date].[Calendar Year].[CY 2003])
- )
- SELECT
- {([Measures].[Total Sales Amount])} ON COLUMNS,
- {[Top 10 Products of 2003]} ON ROWS
- FROM [Step-by-Step]
- WHERE ([Date].[Calendar Year].[CY 2004]);
- /*
- Total Sales Amount
- Mountain-200 Black, 38 $1,327,957.41
- Mountain-200 Black, 42 $1,139,429.49
- Mountain-200 Silver, 38 $1,136,622.49
- Mountain-200 Black, 46 $1,011,074.37
- Mountain-200 Black, 38 (null)
- Mountain-200 Silver, 42 $1,011,486.18
- Touring-1000 Blue, 60 $835,290.16
- Road-350-W Yellow, 48 $897,217.96
- Mountain-200 Silver, 46 $1,029,170.76
- Road-350-W Yellow, 40 $840,970.65
- */
從上面的這個(gè)例子我們領(lǐng)略了SQL與MDX語法的大致區(qū)別。
用MDX查詢編輯器實(shí)現(xiàn)一個(gè)最簡單的MDX的編寫
在SSMS界面登錄Analysis Services,選擇MDX Step By Step數(shù)據(jù)庫:
對(duì)于MDX新手來說,最令人鼓舞的莫過于大部分MDX查詢都可以借助拖拽來實(shí)現(xiàn)。
大家可以參考以下的MDX腳本完成本文開始提供的MDX查詢。
- WITH
- MEMBER [Measures].[Total Sales Amount] AS
- [Measures].[Internet Sales Amount]
- SELECT
- FROM [Step-by-Step]
- WHERE [Date].[Calendar Year].&[2004];
- WITH
- MEMBER [Measures].[Total Sales Amount] AS
- [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount]
- SELECT
- FROM [Step-by-Step]
- WHERE [Date].[Calendar Year].&[2004]
- ;
- WITH
- MEMBER [Measures].[Total Sales Amount] AS
- [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount]
- SET [Top 10 Products of 2003] AS
- TOPCOUNT( [Product].[Product],10)
- SELECT
- FROM [Step-by-Step]
- WHERE [Date].[Calendar Year].&[2004];
- WITH
- MEMBER [Measures].[Total Sales Amount] AS
- [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount]
- SET [Top 10 Products of 2003] AS
- TOPCOUNT( [Product].[Product].[Product].Members, 10,
- ([Measures].[Total Sales Amount], [Date].[Calendar Year].[CY 2003]))
- SELECT
- FROM [Step-by-Step]
- WHERE [Date].[Calendar Year].&[2004];
- WITH
- MEMBER [Measures].[Total Sales Amount] AS
- [Measures].[Internet Sales Amount]+[Measures].[Reseller Sales Amount]
- SET [Top 10 Products of 2003] AS
- TOPCOUNT( [Product].[Product].[Product].Members, 10,
- ([Measures].[Total Sales Amount], [Date].[Calendar Year].[CY 2003]))
- SELECT
- {([Measures].[Total Sales Amount])} ON COLUMNS,
- {[Top 10 Products of 2003]} ON ROWS
- FROM [Step-by-Step]
- WHERE [Date].[Calendar Year].&[2004];
關(guān)于SQL Server 2008數(shù)據(jù)庫學(xué)習(xí)筆記之MDX查詢的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- SQL Server多表查詢優(yōu)化方案總結(jié)
- SQL Server數(shù)據(jù)庫ISNULL函數(shù)的應(yīng)用實(shí)例
- SQL Server數(shù)據(jù)庫DATEPART的語法及使用實(shí)例
- SQL Server根據(jù)子節(jié)點(diǎn)查詢所有父節(jié)點(diǎn)的代碼示例
- SQL Server臟讀方式數(shù)據(jù)提取之NOLOCK和READPAST
責(zé)任編輯:趙鵬
來源:
博客園


相關(guān)推薦




