首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果连续行是匹配的,则合并它们

如果连续行是匹配的,则合并它们
EN

Stack Overflow用户
提问于 2021-09-21 00:58:04
回答 1查看 102关注 0票数 1

如果数据是连续的,我希望将行组合成一行。我查看过空白和孤岛,我知道我以前经常使用SQL Server进行这种操作。这个解决方案让我无法理解,但我记得我做过某种类型的ROW_NUMBER() over (Partition BY groupId, name, email, phone ORDER BY id) - ROW_NUMBER() over (ORDER BY id) seq计算。我没能成功地把这件事办好。

下面是一个示例数据集:

预期结果:

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 01:01:10

如果只想在每个组中使用最后一行,则可以使用lead()

代码语言:javascript
运行
复制
select t.*
from (select t.*,
             lead(id) over (order by id) as next_id,
             lead(id) over (partition by groupid, name, email, phone order by id) as next_id_grp
      from t
     ) t
where next_id_grp is null or next_id_grp <> next_id;

这是针对同一组成员的下一个id和下一个id。当它们不同时,则行是组中的最后一行。

这比row_number()方法更好,因为这通常需要聚合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69262294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档