【发布时间】:2010-02-10 13:50:27
【问题描述】:
我有一个具有以下格式(和示例数据)的日志表:
date | time
2010/01/02 | 10:00
2010/01/02 | 13:00
2010/01/04 | 02:34
我想创建一个 SQL 查询,该查询将检索以下格式的结果:
date1 | time1 | date2 | time2
2010/01/02 | 10:00 | 2010/01/02 | 13:00
2010/01/02 | 13:00 | 2010/01/04 | 02:34
2010/01/04 | 02:34 | <null> | <null>
所以我认为左外连接可以解决问题:
SELECT
i.date as date1,
i.time as time1,
j.date as date2,
j.time as time2
FROM
log_table i
LEFT OUTER JOIN
log_table j
ON
i.id = j.id
AND (j.date > i.date
OR (j.date == i.date AND j.time > i.time))
但是,这会导致以下结果:
date1 | time1 | date2 | time2
2010/01/02 | 10:00 | 2010/01/02 | 13:00
2010/01/02 | 10:00 | 2010/01/04 | 02:34
2010/01/02 | 13:00 | 2010/01/04 | 02:34
2010/01/04 | 02:34 | <null> | <null>
顺便说一下,使用的数据库是PostgreSql。
谢谢。
【问题讨论】:
-
我在
ON子句之后发现了一个缺失的WHERE -
我想你想让 'i' 中的一行与 'j' 中的下一行配对?从您的描述中看不太清楚。
标签: sql postgresql