我正在尝试计算支出的迭代次数。请参阅下面的示例数据。 这就是我所拥有的:这个人已经分三期支付了(分期付款= 1条记录)。
+-----+----------+--------------+--------------+--------------+------------+--------+
|PytID| PytGross| PayoutUnits | SumOfPayouts | PaidOut | PayoutYear | EmpID |
+-----+----------+--------------+--------------+--------------+------------+--------+
| 1 | $11,000 | 6.6667 | 3 | 3 | 2008 | 100 |
+-----+----------+--------------+--------------+--------------+------------+--------+
| 1 | $11,000 | 6.6667 | 3 | 3 | 2009 | 100 |
+-----+----------+--------------+--------------+--------------+------------+--------+
| 1 | $11,000 | 6.6666 | 3 | 3 | 2010 | 100 |
+-----+----------+--------------+--------------+--------------+------------+--------+
使用SumOfPayouts
(他/她应该支付的总次数),我正在尝试找到付款的迭代。每年有1次支付。这是我想要得到的(我没有包括EmpID
b / c的间距。)
+-----+----------+--------------+--------------+--------------+------------+----------+
|PytID| PytGross| PayoutUnits | SumOfPayouts | PaidOut | PayoutYear |Iteration |
+-----+----------+--------------+--------------+--------------+------------+----------+
| 1 | $11,000 | 6.6667 | 3 | 3 | 2008 | 1 |
+-----+----------+--------------+--------------+--------------+------------+----------+
| 1 | $11,000 | 6.6667 | 3 | 3 | 2009 | 2 |
+-----+----------+--------------+--------------+--------------+------------+----------+
| 1 | $11,000 | 6.6666 | 3 | 3 | 2010 | 3 |
+-----+----------+--------------+--------------+--------------+------------+----------+
注意:ID
字段特定于每个付款方式。那个,我的意思是=>一个人选择了3次支付,因此对于这个样本数据,员工100已经选择以3年分期的方式接收20个单位。这3条记录有两个共同点:EmployeeID
和PytID
。
似乎我需要使用PayoutYear
来保留某种ROW_NUMBER()
,但由于我使用的是Access ,因此它不是选项。有没有人知道如何做到这一点?
更多信息:我从查询中提取(SQL非常混乱......)。这就是我从中获取的查询中的数据。
AwardDate PytGross PytUnits Remaining PaidOut Sum EmployeeID MCR_PytYear
12/26/2000 $11,500.06 6.67 0 3 3 100200 2008
12/26/2000 $11,500.06 6.67 0 3 3 100200 2009
答案 0 :(得分:3)
SELECT T1.EmployeeID, T1.PayoutYear,
(SELECT COUNT (*) FROM Table1 AS T2
WHERE (T1.PayoutYear >T2.PayoutYear OR T1.PayoutYear=T2.PayoutYear)
AND T1.EmployeeID=T2.EmployeeID) AS Iteration
FROM Table1 AS T1;
结果:
EmployeeID PayoutYear Iteration
100200 2008 3
100200 2009 6
100200 2010 12
这是我的样本表:
EmployeeID PayoutYear
100 2008
100 2009
100 2010
200 2008
200 2009
和我的查询结果:
EmployeeID PayoutYear Iteration
100 2008 1
100 2009 2
100 2010 3
200 2009 1
200 2010 2
你可以进入查询的SQL视图,并向我展示你正在使用的Select语句,也可能是你表的几行?
更新:我们只是错过了一个小细节:
SELECT T1.EmployeeID, T1.PayoutYear,
(SELECT COUNT (*) FROM Table1 AS T2
WHERE (T1.PayoutYear >T2.PayoutYear OR T1.PayoutYear=T2.PayoutYear)
AND T1.EmployeeID=T2.EmployeeID
AND T1.PayoutID=T2.PayoutID) AS Iteration
FROM Table1 AS T1;
有效!感谢。