如何选择SQL中给定组的第一个和第二个记录?
在Teradata中,我需要选择一个组的第一个记录,以及与其他设置条件的多个组的同一组的第二个记录。我该如何获得这个?
例如
ID | 记录 | 日期 | 1 |
---|---|---|---|
1 | | 2022-01-12 | 1 |
ONE | 2 | 2022-01-12 | 1 |
ONE | 3 | 2022-01-12 | 1 |
ONE | 4 | 2022-01-12 | 1 |
ONE | 1 | 2022-01-12 | 2 |
组 | : | 2022-01-12 | 1 |
两 | 2 | 2022-01-12 | 1 |
两个 | 3 | 2022-01-12 | 1 |
两 | TWE | 2022-01-12 | 1 |
4 | TAT | | |
两 | 5 | 2022-01-12 | 1 |
TWE | | 05-12 | 1 |
两个 | 6 | 2022-05-12 | 1 |
的输出
ID | 记录 | 日期 | 位置 |
---|---|---|---|
1 | 1 | 2022-01-12 | 1 |
ONE | 3 | 2022-01-12 | 1 |
TWET | 1 | TWE222-01-12 | TWE |
: | 所需 | 组 12 | 1 |
In Teradata I need to select the first record for a group as well as the second to last record for the same group for multiple groups with other set conditions. How can I acheive this?
ex table:
group id | records | date | place |
---|---|---|---|
One | 1 | 2022-01-12 | 1 |
One | 2 | 2022-01-12 | 1 |
One | 3 | 2022-01-12 | 1 |
One | 4 | 2022-01-12 | 1 |
One | 1 | 2022-01-12 | 2 |
Two | 1 | 2022-01-12 | 1 |
Two | 2 | 2022-01-12 | 1 |
Two | 3 | 2022-01-12 | 1 |
Two | 4 | 2022-01-12 | 1 |
Two | 5 | 2022-01-12 | 1 |
Two | 6 | 2022-01-12 | 1 |
Two | 5 | 2022-05-12 | 1 |
Two | 6 | 2022-05-12 | 1 |
Desired Output:
group id | records | date | place |
---|---|---|---|
One | 1 | 2022-01-12 | 1 |
One | 3 | 2022-01-12 | 1 |
Two | 1 | 2022-01-12 | 1 |
Two | 5 | 2022-01-12 | 1 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我会做这样的事情:
I would do something like this:
没有测试,只是一个主意。
Not tested, just an idea.
如果您可以手动指定每个组,则可以使用:(
查看一个更通用的解决方案ATM)
This works if you're ok with specifying each group manually:
(looking into a more generic solution atm)
应该工作,不测试
Should work , not tested