我正在寻找FIFO的SQL服务器实现。对于大公司的客户,我有2个数据集,其中包含在一个数据集中获得的积分,以及每年在另一个数据集中兑换和过期的积分。
目标是确定在任何特定年份中获得的积分中兑换和过期的积分。因此,显然,兑换和过期的积分必须以先进先出的方式分配给获得的积分。
数据集如下所示:
获得的积分:
ID year earn
1 2000 100
1 2001 150
1 2002 75
1 2003 10
1 2004 120
点燃:
ID Year Type points
1 2001 burn 50
1 2001 exp 20
1 2003 burn 120
1 2004 exp 100
1 2006 exp 20
组合这两个数据集,我们应该得到一个这样的数据集:
合并数据集:
ID Year Earn Burn exp
1 2000 100 80 20
1 2001 150 90 60
1 2002 75 0 60
1 2003 10 0 0
1 2004 120 0 0
简单地说,已烧毁和过期的积分将分配给先进先出的积分。数据集很大,无法在Excel中导出。在SQL服务器上执行上述操作的代码将会有很大的帮助
答案 0 :(得分:0)
我想出了答案。我当然没有最有效的代码,但我有以下算法来分配使用FIFO逻辑兑换过期的点数
该算法运行良好。我本可以在编码方面做得更好。我花了3个小时在一个拥有1.5亿条记录的数据集上运行