我在 Postgres 表中有一些数据,如下所示:
1 apple datetime1
2 orange datetime2
3 apple datetime3
4 orange datetime4
5 apple datetime5
6 orange datetime6
.
日期时间总是按升序排列,大多数时候苹果行首先插入,橙色排在第二位,但有一些我必须捕捉和消除的例外情况。
我实际上需要的是一个 Postgres 查询,它只配对苹果和橙子:
1 apple datetime1 2 orange datetime2
3 apple datetime3 4 orange datetime4
5 apple datetime5 6 orange datetime6
苹果不应该和其他苹果搭配,橙子也不应该和其他橙子搭配。
有几个条件:
1)在新生成的行中,苹果应该始终排在第一位,橙色排在第二位。
2) 始终将 apple 和 orange 行与最接近的日期时间配对,并忽略其他行。
例如,如果我的原始数据如下所示:
1 apple datetime1
2 apple datetime2
3 orange datetime3
4 orange datetime4
一对
2 apple datetime2 3 orange datetime3
并忽略行
1 apple datetime1
4 orange datetime4
任何想法如何在 Postgres 中做到这一点?