Oracle-单行中的多行,添加重复值列

时间:2014-09-15 14:38:20

标签: oracle

Id Field_id Field_value
------------------------------
1   10           'A'
1   11           'B'
1   12           'C'

我想制作像

这样的行
Id Field_id Field_value data_1  data_2
--------------------------------------
1   10           'A'     'B'     'C'

帮助。

2 个答案:

答案 0 :(得分:2)

看看这个:

with t (Id, Field_id, Field_value) as (
  select 1, 10, 'A' from dual union all
  select 1, 11, 'B' from dual union all
  select 1, 12, 'C' from dual
)
select FIELD_ID1, "10_FIELD_ID", "11_FIELD_ID","12_FIELD_ID"
  from (select id, field_id, min(field_id) over() field_id1, field_value from t)
 pivot (
  max(field_value) field_id
  for field_id in (10, 11, 12)
)

FIELD_ID1   10_FIELD_ID 11_FIELD_ID 12_FIELD_ID
---------------------------------------------------
       10        A           B           C

详细了解pivot here

答案 1 :(得分:0)

通常,人们会查找PIVOT查询,但是,您的输入数据并不像评论中已经提到的那样重复。

您可以使用子查询因子select id, 10 as field_id, field_value,从而使field_it静态值为10.然后使用LISTAGG。但是,分组的行将是单个列作为分隔符分隔值。

我希望您的要求与您所说的完全一致,而不是发布时的拼写错误或错误。