爲什麼有人想將列轉換爲行(即旋轉)?它解決了哪個問題?數據庫轉軸 - 目的是什麼?
我找到了一些鏈接,但沒有得到滿意的答案。
http://codeghar.wordpress.com/2007/11/03/pivot-tables/
http://msdn.microsoft.com/en-us/library/ms177410%28SQL.105%29.aspx
爲什麼有人想將列轉換爲行(即旋轉)?它解決了哪個問題?數據庫轉軸 - 目的是什麼?
我找到了一些鏈接,但沒有得到滿意的答案。
http://codeghar.wordpress.com/2007/11/03/pivot-tables/
http://msdn.microsoft.com/en-us/library/ms177410%28SQL.105%29.aspx
通常情況下,這是因爲佈局在擺動後在報表或用戶界面中效果更好。
規範化數據庫上的數據可能導致數據處於多個記錄的「形狀」中,其中UI想要將這些記錄看作字段。數據標準化很好,但是當以簡潔自然的格式表示數據時,通常需要進行旋轉。
當然,我鏈接到的示例是Excel,而不是真實的DB,但圖片描述了旋轉數據看起來更自然的示例,並且概念是相同的。
這個怎麼樣作爲一個例子嗎?
在數據提取的一個常見的期望是轉變 多行的輸出爲多列中的單個行的能力。 SQL Server 2005/2008提供了使用查詢中的PIVOT 運算符執行此操作的功能。
編輯
比方說你有一個按日期存儲每個客戶的銷售表
喜歡的東西
Table
- SaleDate
- CustomerID
- SaleAmount
使用PIVOT您可以顯示總計每銷售一格客戶按月/季/年
|Client A|Client B|Client C
--------------------------------
2007| 100 | 0 | 150
2008| 0 | 200 | 160
2009| 110 | 180 | 100
這純粹是爲了簡要目的。
確實,這是pivoting的定義。爲什麼有人想把列轉換成行?什麼目的 ? – Master 2012-07-24 05:39:30
關於您的問題「爲什麼有人想將列轉換爲行(即,旋轉)?它解決了哪個問題?」
這不是「數據如何看起來直觀」,而是「如何組織和處理」。即:
在大多數數據庫中,行代表「記錄 - (實體,事件等)」和列「字段(該實體的屬性)」。例如,下面是數據的典型DB表示;
Person | Birth | Height |
-------------------------------
John | 1980 | 1.82 |
Smith | 1987 | 2.02 |
這意味着;每列表示「人物」的特定屬性,並且當您選擇特定列時,您將獲得所有人的特定屬性。這樣,一列是一個「維度」,所有值都具有相同的單位(數據類型),都是日期,都是長度等。
但是,在金融建模中,反過來代表數據只是非常方便。例如,「每月現金流量」表中的典型值如下所示。
Item | Jan | Feb |
-----------------------------
Sales | $100 | $150 |
Tax | -$50 | -$15 |
注意,在電子表格這種製表不符合數據庫格式,列標題是時間,但在列中的值貨幣價值,衝突,我們不能做與此列計算。
如果我們PIVOT這個表,就變成
Date | Sales | Tax |
------------------------------
Jan | $100 | -$50 |
Feb | $150 | -$15 |
現在,柱尺寸(標題),並在其內部的數據是一致的。 日期欄包含所有日期,其他包含所有$數字。我們可以拿一個專欄,並用它做矢量操作。
這是一個旋轉解決的問題。
「每一行代表」個人「的特定屬性,當您選擇特定的行時,您將獲得所有人的特定屬性」 - 我認爲您實際上是指「每列」和「particulat列」......我冒着改變措詞的自由。否則,一個非常好的例子 - 的確如此 - 謝謝! – 2017-04-28 09:10:05
謝謝!通過查看這個例子,我可以看到一個可能的使用pivoting - 假設我們想要添加3個新產品Prod G,Prod H,Prod I.通過使用pivoted方式(GI table),我們可以通過簡單地增加新產品行而不是增加列數。因此,不需要添加新的列。當然,這需要更多的記憶。但是,我不知道誰會想要使用這個數據透視表,爲什麼? – Master 2012-07-24 06:10:31