熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server 生成數據透視表

2013-11-15 14:47:01  來源: SQL Server 

  數據透視表是分析數據的一種方法在Excel中就包含了強大的數據透視功能數據透視是什麼樣的呢?給個例子可能更容易理解假設有一張數據表

  銷售人員            書籍                        銷量

  

  小王               Excel教材                     

  小李               Excel教材                     

  小王               Word教材                       

  小李               Excel教材                       

  小王               Excel教材                       

  小李               Excel教材                       

  小王               Word教材                     

  小李               Excel教材                     

  一種數據透視的方法是統計每個銷售人員對每種書籍的銷量 結果如下

  

  Excel教材          Word教材             總計

  

  小王                                                            

  小李                                                          

  各位看明白了嗎?這是最簡單的一種數據透視了如果有必要也可以有多級分組

  好了那在Sql Server中如何視現數據透視的功能呢?我是Sql Server的初學者看了網上的一些例子結合自己的理解寫了下面這些Sql語句

  生成基礎數據的代碼

   Create table s(
[name] nvarchar()
book nvarchar()
saledNumber int
)
insert into s ([name]booksaledNumber) values(小王Excel教材);
insert into s ([name]booksaledNumber)values(小李Excel教材);
insert into s ([name]booksaledNumber)values(小王Word教材);
insert into s ([name]booksaledNumber)values(小李Excel教材);
insert into s ([name]booksaledNumber)values(小王Excel教材);
insert into s ([name]booksaledNumber)values(小李Excel教材);
insert into s ([name]booksaledNumber)values(小王Word教材);
insert into s ([name]booksaledNumber)values(小李Excel教材);

  生成數據透視表

   set @sql = SELECT [name]
select @sql = @sql + sum(case  book when +quotename(book)+ then saledNumber else end) as + quotename(book)+  from s group by book
select @sql = left(@sqllen(@sql))
select @sql = @sql + sum(saledNumber) as [sum] from s group by [name]
select @sql
exec(@sql)

  上面的查詢語句首先是拼接了一條"Sql語句"它的最終結果為:

  SELECT [name] sum(case book when Excel教材 then saledNumber else end) as [Excel教材]sum(case book when Word教材 then saledNumber else end) as [Word教材] sum(saledNumber) as [sum] from s group by [name]

  當然如果表中的數據不同那麼這生成的Sql語句也是不同的最後它調用了Sql Server的系統存儲過程Exec來執行這條語句截個圖吧

  這就是在Sql Server中生成數據透視表的實現其實它的核心也就是上面拼接成的那條Sql語句更復雜的透視方式比如多級透視也是在這個基礎上的實現的


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22316.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.