SQL语句,让我输出多列作为一个行
问题描述:
我的表在我的数据库是这样的:SQL语句,让我输出多列作为一个行
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')
)
答
看起来你只需要对你的数据进行汇总:
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
这个术语的总称称为组连接 - 至少由MySQL的GROUP_CONTACT()函数进行......我并没有真正使用Oracle,所以不确定equiv(在SQL Server中,这必须通过自定义逻辑来处理,没有任何东西内置的,但该术语可能会给你至少一些方向) – jleach
看到这里:http://*.com/questions/16771086/is-there-any-function-in-oracle-similar-to-group-concat-在MySQL的 – jleach