0

元の質問

2 つの属性の組み合わせのリスト値を含むテーブルがあります。

Pattern | Feature | Value
--------+---------+-------
 P1     | F1      | V1.1
 P1     | F2      | V1.2
 P2     | F1      | V2.1
 P2     | F2      | V2.2

「Features」が列名になるように、テーブルを変換したいと思います。

Pattern | F1      | F2
--------+---------+-------
 P1     | V1.1    | V1.2
 P2     | V2.2    | V2.2

純粋なSQLでそれは可能ですか? 私は SQLite を好みますが、MySQL や PostgreSQL も使用できます。

どうもありがとう!

JWの回答後に拡張

インスタンスを含む別の列については言及しませんでした。思ったとおり、それは重要ではありませんでした。1 つのインスタンスは 1 つのパターンにのみ割り当てることができますが、多くのフィーチャーが含まれています。

   Instance | Pattern | Feature | Value
   ---------+ --------+---------+-------
     In1    | P1      |  F1     | V1.1.1
     In1    | P1      |  F2     | V1.1.2
     In2    | P1      |  F1     | V2.1.1
     In2    | P1      |  F2     | V2.1.2
     In3    | P2      |  F1     | V3.2.1
     In3    | P2      |  F2     | V3.2.2
     In4    | P2      |  F1     | V4.2.1
     In4    | P2      |  F2     | V4.2.2

インスタンス自体は結果のテーブルでは重要ではありませんが、結果のテーブルにはインスタンスごとに 1 つの行が含まれている必要があります。(SVMエンジンをフィードするtorです)

4

1 に答える 1

2
SELECT  Pattern,
        MAX(CASE WHEN Feature = 'F1' THEN value ELSE NULL END) AS F1,
        MAX(CASE WHEN Feature = 'F2' THEN value ELSE NULL END) AS F2
FROM    tableName
GROUP   BY Pattern
于 2013-03-07T05:32:15.830 に答える