ホームページ >データベース >mysql チュートリアル >JOIN 関数と集計関数を使用して SQL Server 2000 で製品メタデータをピボットするにはどうすればよいですか?

JOIN 関数と集計関数を使用して SQL Server 2000 で製品メタデータをピボットするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-02 18:29:39432ブラウズ

How to Pivot Product Metadata in SQL Server 2000 using a JOIN and Aggregate Function?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。