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() 会产生一条记录。我需要得到这两个记录。一个属性 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 回答