なぜ誰かが列を行に変換したいのですか (つまり、ピボット)? どの問題を解決しますか?
いくつかのリンクを見つけましたが、質問に対する満足のいく回答が得られませんでした。
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がそれらのレコードをフィールドとして表示したい場合に、複数のレコードの「形」のデータになる可能性があります。データの正規化は優れていますが、データを簡潔で自然な形式で表現する場合、ピボットが必要になることがよくあります。
ここの例。
確かに、私がリンクした例は、真のDBではなくExcelですが、写真は、ピボットされたデータがより自然に見える例を示しており、概念は同じです。
例としてこれはどうですか?
データ抽出で一般的に期待されるのは、複数の行の出力を 1 つの行の複数の列に変換する機能です。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
これは純粋に要約を目的としたものです。