ホームページ >データベース >mysql チュートリアル >JOIN 関数と集計関数を使用して SQL Server 2000 で製品メタデータをピボットするにはどうすればよいですか?
SQL Server 2000 を使用したピボット変換
問題:
データベースには 2 つのテーブルが含まれています。製品と製品メタ、以下を含む構造体:
Products: - ProductId - Name Product Meta: - ProductId - MetaKey - MetaValue
このデータを、MetaKey 列に基づいて MetaValue 列をピボットする結果セットに変換したいとします。望ましい結果セットは次のとおりです:
ProductId | Name | A | B | C
解決策:
以前に提案された解決策は最適ではない可能性がありますが、それでも集約関数またはサブクエリの使用を強調しています。有効なグループ化を確認してください。別のアプローチは次のとおりです。
SELECT P.ProductId, P.Name, MAX(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS A, MAX(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS B, MAX(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS C FROM Products AS P LEFT JOIN ProductMeta AS PM ON PM.ProductId = P.ProductId GROUP BY P.ProductId, P.Name;
このクエリは、Products テーブルと Product Meta テーブルを結合し、結果を ProductId と Name でグループ化します。集約関数 MAX() は、各 MetaKey の最大 MetaValue を抽出するために使用されます。これにより、各キーの最新の MetaValue のみが結果セットに含まれるようになります。
以上がJOIN 関数と集計関数を使用して SQL Server 2000 で製品メタデータをピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。