ホームページ > データベース > mysql チュートリアル > SQL Server 2000 でデータをピボットして行ベースのデータを列ベースの形式に変換するにはどうすればよいですか?

SQL Server 2000 でデータをピボットして行ベースのデータを列ベースの形式に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-31 18:41:11
オリジナル
647 人が閲覧しました

How Can I Pivot Data in SQL Server 2000 to Transform Row-Based Data into a Column-Based Format?

SQL Server 2000 でのデータのピボット: 詳細な説明

SQL Server 2000 は、ユーザーがデータを変換できるようにするピボットと呼ばれる強力な機能を提供します。行ベースの形式から列ベースの形式へ。これは、複数の列にわたるデータを要約したり、データのマトリックス ビューを作成したりする必要があるシナリオに役立ちます。

問題ステートメント:

ある特定のインスタンスでは、ユーザーには 2 つのテーブルがあります:

  • Products: などの基本的な製品情報が含まれます。 ProductId と Name。
  • Product Meta: MetaKey や MetaValue などの列を含む製品メタデータを保存します。

ユーザーは MetaValue 列をピボットする結果セットを必要としますMetaKey 列に基づいた Product Meta テーブルから。Products テーブルの ProductId 列と Name 列が行として使用されます。 headers.

最適な解決策:

この変換を実現するには、次の SQL クエリを使用できます:

SELECT P.ProductId, P.Name
    , MIN(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS A
    , MIN(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS B
    , MIN(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS C
FROM Products AS P
JOIN ProductMeta AS PM
    ON PM.ProductId = P.ProductId
GROUP BY P.ProductId, P.Name
ログイン後にコピー

説明:

  • SELECT 句は、含める列を指定します。結果セット。
  • MIN() 集計関数は、ProductId と Name の各グループ内の各 MetaKey の最小値を返すために使用されます。
  • CASE 式は、どの列 ( A、B、または C) を使用して、MetaKey 値に基づいてデータを設定します。
  • GROUP BY 句は、結果の行を定義する列を指定します。 set.

注:

このシナリオでは、行が正しくグループ化されていることを確認するために、GROUP BY 句の使用が不可欠です。 GROUP BY 句を使用しないと、結果がずれる可能性があります。さらに、GROUP BY 句に含まれていない各列は、集計関数 (この場合は MIN()) でラップする必要があります。

以上がSQL Server 2000 でデータをピボットして行ベースのデータを列ベースの形式に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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