如何在 SQL 中合并记录开始日期和结束日期

发布于 2025-01-15 02:02:36 字数 1172 浏览 0 评论 0原文

我有下面一组数据示例:

IDRoleSTART_DATEEND_DATE
1A2022-02-012022-02-03
1A2022-02-032022-02-10
1A2022-02-109000-12-31
22022-02-012022-02-03
2A2022-02-032022-02-04
2B2022-02-042022-02-11

我想根据 ID、ROLE、START_DATE 和 END_DATE 对它们进行分组。所以它看起来像下面这样: x

ID角色START_DATEEND_DATE
1A2022-02-019000-12-31
2B2022-02-012022-02-03
2A2022-02-032022-02-04
2B2022-02-042022- 02-11

我怎样才能实现 这?

谢谢

I have a set of data example below:

IDRoleSTART_DATEEND_DATE
1A2022-02-012022-02-03
1A2022-02-032022-02-10
1A2022-02-109000-12-31
2B2022-02-012022-02-03
2A2022-02-032022-02-04
2B2022-02-042022-02-11

I want to group them based on the ID, ROLE, START_DATE and END_DATE. So it looks like below:
x

IDRoleSTART_DATEEND_DATE
1A2022-02-019000-12-31
2B2022-02-012022-02-03
2A2022-02-032022-02-04
2B2022-02-042022-02-11

How can I achieve this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡淡の花香 2025-01-22 02:02:36

Teradata NORMALIZE 的简单任务:

with cte as
 ( -- works on PERIODs only
   select NORMALIZE -- combine overlapping periods
      ID, Role, period(START_DATE, END_DATE) as pd
   from mytable
 )
-- split period back into start/end
select ID, Role, begin(pd) as START_DATE, end(pd) as END_DATE
from cte

Simple task for Teradata's NORMALIZE:

with cte as
 ( -- works on PERIODs only
   select NORMALIZE -- combine overlapping periods
      ID, Role, period(START_DATE, END_DATE) as pd
   from mytable
 )
-- split period back into start/end
select ID, Role, begin(pd) as START_DATE, end(pd) as END_DATE
from cte
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文