允许我将多列输出为一行的SQL语句

时间:2016-09-19 13:05:25

标签: sql oracle

我的数据库中的表格如下:

ID | VARIANT | SIFRANT | VALUE

当我打电话

SELECT * FROM example_table

我自己得到每一行。但是我的数据库中的记录可以具有相同的VARIANT。我想将这些记录输出到同一行。 例如,如果我有

ID | VARIANT | SIFRANT | VALUE
1  | 3       | 5       | 50
2  | 3       | 6       | 49
3  | 3       | 1       | 68

我希望输出

VARIANT | VALUES_5 | VALUES_6 | VALUES_1
3       | 50       | 49       | 68

编辑:我找到了使用PIVOT的解决方案,代码如下:

select * 
from (
    select variant, VALUE, SIFRANT 
    from example_table
)
pivot 
(
    max(VALUE)
    for SIFRANT  
    in ('1','2','3','4','5','6','7','8','9','10')
)

1 个答案:

答案 0 :(得分:4)

您似乎只需要对数据进行汇总:

with test(ID, VARIANT, SIFRANT, VALUE) as
(
  select 1, 3, 5, 50 from dual union all
  select 2, 3, 6, 49 from dual union all
  select 3, 3, 1, 68 from dual
)
select variant, listagg (value, ' ') within group ( order by id) 
from test
group by variant