関連した 膨大な量のデータをテーブルの形式で保存します。これらのテーブルには、任意の数の行と列を含めることができます。しかし、行レベルのデータを列データに変更する必要がある場合はどうでしょうか。さて、SQLピボットに関するこの記事では、SQLServerで行を列に変換する方法を紹介します。
この記事では、次のトピックについて説明します。
フィボナッチ数c ++
SQLのPIVOTとは何ですか?
PIVOTは、単一の列の一意の値を複数の列に変換することにより、テーブル値をローテーションするために使用されます。これは、行を列値にローテーションするために使用され、残りの列値で必要に応じて集計を実行します。
一方、UNPIVOTは、反対の操作を実行するために使用されます。したがって、特定のテーブルの列を列値に変換するために使用されます。
この記事に進んで、SQLピボットの構文を理解しましょう。
構文:
SELECT NonPivoted ColumnName、[First Pivoted ColumnName] AS ColumnName、[Second Pivoted ColumnName] AS ColumnName、[Third Pivoted ColumnName] AS ColumnName、... [Last Pivoted ColumnName] AS ColumnName FROM(データを生成するSELECTクエリ)AS [alias最初のクエリの場合] PIVOT([AggregationFunction](ColumName)FOR [値が列ヘッダーになる列のColumnName] IN([First Pivoted ColumnName]、[Second Pivoted ColumnName]、[Third Pivoted ColumnName] ... [lastピボット列]))AS [ピボットテーブルのエイリアス]
ここに、あなたも使用することができます ORDERBY句 値を昇順または降順で並べ替えます。 SQLでのPIVOTとその基本的な構文がわかったところで、次に進み、その使用方法を見てみましょう。
例
理解を深めるために、次の表を検討して、すべての例を説明します。
サプライヤーテーブル:
サプライヤーID | DaysofManufacture | 費用 | 顧客ID | PurchaseID |
1 | 12 | 1230 | 十一 | P1 |
2 | 21 | 1543 | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | 十一 | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | 十一 | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | 十一 | P3 |
10 | 56 | 6832 | 33 | P2 |
各顧客が費やした平均コストを取得するための簡単なクエリを作成しましょう。
SELECT CustomerID、AVG(Cost)AS AverageCostofCustomer FROM Supplier GROUP BY CustomerID
出力:
顧客ID | AverageCostofCustomer |
十一 | 1787.75 |
22 | 4654 |
33 | 5238.33 |
ここで、上記のテーブルをピボットしたいとしましょう。ここで、CustomerID列の値が列ヘッダーになります。
-1行3列のピボットテーブルを作成しますSELECT'AverageCostofCustomer 'AS Cost_According_To_Customers、[11]、[22]、[33] FROM(SELECT CustomerID、Cost FROM Supplier)AS SourceTable PIVOT(AVG(Cost)FOR CustomerID IN( [11]、[22]、[33]))ASピボットテーブル
出力:
Cost_According_To_Customers | 十一 | 22 | 33 |
AverageCostofCustomer | 1787.75 | 4654 | 5238.33 |
注意: 使用する場合 集計関数 PIVOTを使用すると、集計の計算時にnull値は考慮されません。
これは基本的な例ですが、PIVOT句がどのように機能したかを理解しましょう。
PIVOT条項の働き
上記を参照できるように、ピボットテーブルを作成するには、次の手順に従う必要があります。
- ピボットする列を選択します
- 次に、ソーステーブルを選択します。
- PIVOT演算子を適用してから、集計関数を使用します。
- ピボット値に言及します。
ピボットする列を選択します
最初に、結果に含めるフィールドを指定する必要があります。この例では、ピボットテーブルのAverageCostofCustomer列を検討しました。次に、列ヘッダー11、22、および33を使用して他の3つの列を作成しました。例-
SELECT'AverageCostofCustomer 'AS Cost_According_To_Customers、[11]、[22]、[33]
ソーステーブルを選択
次に、ピボットテーブルのソースデータを返すSELECTステートメントを指定する必要があります。この例では、SuppliersテーブルからCustomerIDとCostを返しています。
(SELECT CustomerID、Cost FROM Supplier)AS SourceTable
PIVOT演算子を適用してから、集計関数を使用します
次に、ピボットテーブルの作成時に使用する集計関数を指定する必要があります。この例では、AVG関数を使用して平均コストを計算しました。
PIVOT(AVG(コスト)
ピボット値に言及する
最後に、結果のピボットテーブルに含める必要のある値について言及する必要があります。これらの値は、ピボットテーブルの列見出しとして使用されます。
FOR CustomerID IN([11]、[22]、[33]))AS PivotTable
これがPIVOTオペレーターの仕組みです。 SQL PIVOTに関するこの記事に進んで、SQLUNPIVOTとの違いを理解しましょう。
SQL UNPIVOT
SQL UNPIVOT演算子は、PIVOTの操作とは逆の操作を実行するために使用されます。これは、列データを行レベルのデータにローテーションするために使用されます。 UNPIVOTの構文は、PIVOTの構文と似ています。唯一の違いは、を使用する必要があるということです 「」 UNPIVOT」 。
例:
列SupplierID、AAA、BBB、およびCCCを使用してテーブルを作成しましょう。また、いくつかの値を挿入します。
CREATE TABLE sampletable(SupplierID int、AAA int、BBB int、CCC int)GO INSERT INTO sampletable VALUES(1,3,5,6)INSERT INTO sampletable VALUES(2,9,2,8)INSERT INTO sampletable VALUES(3、 8,1,7)GO
出力:
サプライヤーID | AAA | BBB | CCC |
1 | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | 1 | 7 |
ここで、テーブルのピボットを解除したいとします。これを行うには、次のコードを参照できます。
SELECT SupplierID、Customers、Products FROM(SELECT SupplierD、AAA、BBB、CCC FROM sampletable)p UNPIVOT(Products FOR Customers IN(AAA、BBB、CCC))AS example GO
サプライヤーID | お客様 | 製品 |
1 | AAA | 3 |
1 | BBB | 5 |
1 intのc ++ソート配列 | CCC | 6 |
2 | AAA | 9 |
2 | BBB | 2 |
2 | CCC | 8 |
3 cのリンクリストプログラム | AAA | 8 |
3 | BBB | 1 |
3 | CCC | 7 |
これが、SQLPIVOTとUNPIVOTの使用方法です。これで、この記事は終わりです。 SQLの使い方をご理解いただければ幸いです。 あなたがについてもっと知りたいなら MySQL このオープンソースのリレーショナルデータベースを理解してから、 インストラクター主導のライブトレーニングと実際のプロジェクト経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。
質問がありますか? SQLピボットに関するこの記事のコメントセクションでそれについて言及してください。折り返しご連絡いたします。