SQL Server 2000 でのデータのピボット
データのピボットとは、データセットを垂直方向の列指向の形式から形式に変換するプロセスを指します。水平方向の行指向形式。つまり、テーブル内のデータを回転して列を行にしたり、その逆を行うことができます。
次の 2 つのテーブルについて考えてみましょう:
Products
ProductId | Name |
---|---|
1 | Product A |
2 | Product B |
製品Meta
ProductId | MetaKey | MetaValue |
---|---|---|
1 | A | Value A for Product A |
1 | B | Value B for Product A |
1 | C | Value C for Product A |
2 | A | Value A for Product B |
2 | B | Value B for Product B |
2 | C | Value C for Product B |
製品名を行として表示し、メタ キーを列として表示し、各セルに対応するメタ値を表示する結果セットを取得したいとします。
ProductName | Meta A | Meta B | Meta C |
---|---|---|---|
Product A | Value A for Product A | Value B for Product A | Value C for Product A |
Product B | Value A for Product B | Value B for Product B | Value C for Product B |
このピボットを達成するには、条件付き集計と SELECT 内で CASE ステートメントを組み合わせて使用できます。ステートメント:
SELECT P.ProductId, P.Name, MIN(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS MetaA, MIN(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS MetaB, MIN(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS MetaC FROM Products AS P INNER JOIN ProductMeta AS PM ON PM.ProductId = P.ProductId GROUP BY P.ProductId, P.Name;
このクエリは、製品 ID と名前によって行を正しくグループ化し、各キーに必要なメタ値を取得します。
以上が条件付き集計を使用して SQL Server 2000 でデータをピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。