【发布时间】:2018-08-16 14:08:08
【问题描述】:
我试图在桌子上执行自相交并且有点卡住了,我已经阅读了很多关于分组等的内容,但似乎找不到帮助我生成良好输出的实际示例。
我的源表是这样的...
从那里我想实现这个......
我们将不胜感激地接受任何帮助。 谢谢
【问题讨论】:
-
这里的大多数人想要格式化文本,而不是图像或图像链接。
-
请发帖,你试过什么?
我试图在桌子上执行自相交并且有点卡住了,我已经阅读了很多关于分组等的内容,但似乎找不到帮助我生成良好输出的实际示例。
我的源表是这样的...
从那里我想实现这个......
我们将不胜感激地接受任何帮助。 谢谢
【问题讨论】:
由于“Order”列是连续的并且每个 EmplID 没有间隙,因此应该使用自左连接。
SELECT
e1.EmplID,
e1."Date",
e2."Date" AS "Next Date"
FROM EmployeeDates AS e1
LEFT JOIN EmployeeDates AS e2 ON (e2.EmplID = e1.EmplID AND e2."Order" = e1."Order" + 1)
ORDER BY e1.EmplID, e1."Order"
如果您的数据库支持窗口函数 LEAD,那么您可以在没有自连接的情况下执行此操作。即使没有“订单”列。
SELECT
EmplID,
"Date",
LEAD("Date") OVER (PARTITION BY EmplID ORDER BY "Date") AS "Next Date"
FROM EmployeeDates
ORDER BY EmplID, "Date"
好吧,至少如果“日期”列是 DATE 类型而不是某些字符串类型,例如 CHAR、VARCHAR、TEXT。由于字母排序不会返回与“顺序”列相同的顺序。
【讨论】: