1

次の構造を持つテーブルがあります。

id    key data
1     A   10
1     B   20
1     C   30

これらのキーを列として取得し、値を行として取得するように、クエリを作成する必要があります。

例:

  id A  B  C
  1 10 20 30

ユニオンとケースを使用してみましたが、1 行ではなく 3 行になります

なにか提案を?

4

1 に答える 1

1

これを行う最も簡単な方法は次のとおりです。

SELECT DISTINCT "id", 
   (SELECT "data" FROM Table1 WHERE "key" = 'A') AS "A",
   (SELECT "data" FROM Table1 WHERE "key" = 'B') AS "B",
   (SELECT "data" FROM Table1 WHERE "key" = 'C') AS "C"
FROM Table1

または、PIVOT を使用できます。

SELECT * FROM 
  (SELECT "id", "key", "data" FROM Table1)
PIVOT (
  MAX("data") 
    FOR ("key") IN ('A', 'B', 'C'));

sqlfiddle demo

于 2013-10-21T13:01:30.897 に答える