ホームページ > データベース > mysql チュートリアル > SQL Server の PIVOT 関数はどのようにして広範なデータをより分析しやすい形式に変換できるのでしょうか?

SQL Server の PIVOT 関数はどのようにして広範なデータをより分析しやすい形式に変換できるのでしょうか?

Susan Sarandon
リリース: 2024-12-17 11:17:25
オリジナル
245 人が閲覧しました

How Can SQL Server's PIVOT Function Transform Wide Data to a More Analyzable Format?

PIVOT を使用して SQL Server でデータを変換する

SQL Server の PIVOT 操作を使用すると、データをワイド フォーマットからトール フォーマットに変換できます。により、データの要約と分析が容易になります。これは、行と列で編成されたデータを、各列が特定の属性を表し、各行がその属性の特定の値を表す形式に変換するシナリオで特に役立ちます。

シナリオの例は次のとおりです。ワイド形式のデータを持つ次のデータセットを次の形式に変換します:

Name1 | Name2 | Value
-------|-------|-------
A     | P1     | 1
A     | P2     | 1
A     | P3     | 2
B     | P1     | 3
B     | P2     | 1
B     | P4     | 1
ログイン後にコピー

次の形式に変換します:

       A     B
P1     1     4
P2     1     1
P3     2     NULL
P4     NULL  1
ログイン後にコピー

これを実現するにはSQL Server 2005 での変換では、次のコードを使用できます。

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )
ログイン後にコピー

このコードは、Name1 列の一意の値に基づいて PIVOT クエリを動的に組み立てます。まず、個別の Name1 値をカンマ区切りのリストに連結し、それを PIVOT ステートメントで使用して新しい列を作成します。 SUM() 集計関数は、各行 (Name2) 内の各属性 (Name1) の合計値を計算します。

結果は、目的の Tall 形式で変換されたデータセットになります。ここで、各列は Name1 属性を表し、各列はそれぞれを表します行には、その属性に対応する合計値が含まれます。この形式は、より簡潔で組織化されたデータのビューを提供することで、データの分析と要約を容易にします。

以上がSQL Server の PIVOT 関数はどのようにして広範なデータをより分析しやすい形式に変換できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート