【发布时间】:2012-10-17 05:10:32
【问题描述】:
您好,我有一个有趣的问题。我有一个员工表如下
CREATE TABLE EMPLOYEE(
EMPLOYEE_ID INTEGER,
SALARY DECIMAL(18,2),
PAY_PERIOD DATE)
现在这些表格中有员工,其中一些人按月、一些每周、一些双周和一些每天获得报酬。如果三个连续支付周期的工资相等,我们想要找到一个指标为“Y”。让我们举个例子。
Employee Pay_Period Salary
1 01/01/2012 $500
1 08/01/2012 $200
1 15/01/2012 $200
1 22/01/2012 $200
1 29/01/2012 $700
在这种情况下,指标应为“是”,因为连续 3 个支付期的工资为 200 美元。
由于支付周期的数量不是恒定的,我不确定如何编写此代码,因为我事先不知道我需要多少左联接。由于我在 Teradata 中编写此代码,因此我尝试使用 RECURSIVE 函数但被难住了。关于如何进行此操作的任何一般想法?我宁愿不创建存储过程或使用 PL/SQL 逻辑。
【问题讨论】:
-
在 Oracle 中这将是一个 LAG 函数
-
在 Oracle 中,您根本不会得到报酬。这是 Larry() 函数。