繁体   English   中英

SQL组每2行

[英]SQL group by every 2 rows

我们有什么:

id|value1|value2|
1 |15    |null  |
2 |null  |12    |
3 |98    |null  |
4 |null  |41    |

我们想要的是-每两行对数据进行分组以产生以下结果:

idGrouped|value1|value2|
1        |15    |12    |
2        |98    |41    |

我想我可以在id列上使用模。

这是一个Oracle数据库(但我宁愿在“ pure sql”中进行操作)

编辑

IT可能不清楚,但重要的部分是“ idGrouped”列。 我简化了示例,但是我需要每2行(或'n'行)对数据进行分组。

您可以使用条件聚合:

select floor( (id - 1) / 2) as id, max(value1), max(value2)
from t
group by floor( (id - 1) / 2);

假设id在无间隙的情况下递增。 如果不正确,请使用row_number()

select floor( (seqnum - 1) / 2) as id, max(value1), max(value2)
from (select t.*, row_number() over (order by id) as seqnum
      from t
     ) t
group by floor( (seqnum - 1) / 2);
select value1, value2
from table1
where value1 is not null or value2 is not null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM