SQLピボット–行を列に変換する方法を知っている



SQLピボットに関するこの記事は、詳細な例を使用して、行レベルのデータを列データに変換する方法に関する包括的なガイドです。

関連した 膨大な量のデータをテーブルの形式で保存します。これらのテーブルには、任意の数の行と列を含めることができます。しかし、行レベルのデータを列データに変更する必要がある場合はどうでしょうか。さて、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
1121230十一P1
221154322P2
3322. 3. 4. 5十一P3
414876522P1
542345233P3
631543133P1
7412342十一P2
854365422P2
9331234十一P3
1056683233P2

各顧客が費やした平均コストを取得するための簡単なクエリを作成しましょう。

SELECT CustomerID、AVG(Cost)AS AverageCostofCustomer FROM Supplier GROUP BY CustomerID

出力:

顧客ID AverageCostofCustomer
十一1787.75
224654
335238.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 十一2233
AverageCostofCustomer 1787.7546545238.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
1356
2928
3817

ここで、テーブルのピボットを解除したいとします。これを行うには、次のコードを参照できます。

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ピボットに関するこの記事のコメントセクションでそれについて言及してください。折り返しご連絡いたします。