如何将2个记录与单个字段合并为1行,包含2个字段(Oracle 11g)?

时间:2014-08-21 07:49:08

标签: sql oracle oracle11g

这是一个示例数据

record1: field1 = test2
record2: field1 = test3

我想要的实际输出是

record1: field1 = test2 | field2 = test3

我环顾网但找不到我要找的东西。我可以使用自定义函数以这种格式获取它,但我试图看看是否有办法让它工作而不诉诸于此。

非常感谢

2 个答案:

答案 0 :(得分:2)

您需要使用pivot:

with t(id, d) as (
  select 1, 'field1 = test2' from dual union all
  select 2, 'field1 = test3' from dual 
)
select *
  from t
pivot (max (d) for id in (1, 2))

如果您没有id字段,则可以生成它,但您将拥有XML类型:

with t(d) as (
  select 'field1 = test2' from dual union all
  select 'field1 = test3' from dual 
), t1(id, d) as (
  select ROW_NUMBER() OVER(ORDER BY d), d from t
)
select *
  from t1
pivot xml (max (d) for id in (select id from t1))

答案 1 :(得分:1)

有几种方法可以解决这个问题 - 谷歌将行数转移到列。以下是一组答案:http://www.dba-oracle.com/t_converting_rows_columns.htm