如何将多行合并成一行?

时间:2015-03-21 09:42:02

标签: sql oracle

我目前有一个表的查询,它返回多行。 我想将每个人的这些组合成一行。

有办法做到这一点吗?

我需要的查询和结果的示例数据:

http://upic.me/i/wf/stack.jpg

2 个答案:

答案 0 :(得分:4)

使用分组和聚合:

select
  max(Seq) as Seq,
  ID,
  sum(RED1) as RED1,
  sum(RED2) as RED2,
  sum(RED3) as RED3,
  sum(GREEN1) as GREEN1,
  sum(GREEN2) as GREEN2,
  sum(GREEN3) as GREEN3
from
  Table 1
group by
  ID

演示:http://sqlfiddle.com/#!4/ad36e/3

注意:如果字段在组中具有多个非空值,则根据所需的结果使用不同的聚合值。使用sum为您提供组中值的总和,使用max为您提供组中的最高值。

答案 1 :(得分:3)

尝试此查询:

select ID , max(seq) Seq, max(red1) RED1 , max(red2) RED2, max(red3) RED3, 
max(green1) GREEN1, max(green2) GREEN2, max(green3) GREEN3
from Table1
group by ID;