0

次のようなデータがあります。

**ATTR_ID**    **ATTR_VAL**
103            E
104            F             
136            E
136            U

PIVOTを使用してデータをこれに変換したい:

**103**     **104**     **136**
E           F           U
E           F           E

PIVOT で MAX() を使用すると、1 つのレコードが生成されます。両方のレコードを取得する必要があります。属性 ID は、複数の属性値を持つことができます。

SELECT *
( SELECT ATTR_ID, ATTR_VAL FROM DATA_TABLE )
PIVOT (MAX(ATTR_VAL) FOR ATTR_ID IN (103,104,136))

PIVOT を使用してこの問題について間違っていますか?

4

1 に答える 1

0

デカルト積だけが必要な場合

SELECT attr_103.attr_val as "103",
       attr_104.attr_val as "104",
       attr_136.attr_val as "136"
  FROM (SELECT attr_id, attr_val
          FROM attr_table
         WHERE attr_id = 103) attr_103
       CROSS JOIN 
       (SELECT attr_id, attr_val
          FROM attr_table
         WHERE attr_id = 104) attr_104
       CROSS JOIN 
       (SELECT attr_id, attr_val
          FROM attr_table
         WHERE attr_id = 136) attr_136
于 2012-05-24T12:24:36.647 に答える