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'
帮助。
答案 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
。但是,分组的行将是单个列作为分隔符分隔值。
我希望您的要求与您所说的完全一致,而不是发布时的拼写错误或错误。