这个问题的标题可能措辞不佳,因为除了提供一些演示数据之外,我发现很难简明扼要地解释我想要什么。
我有一个查询,它从 sql 表中返回以下数据:
ID Job User Amount
1 101 Bob 100
2 101 Pete 500
3 102 Bob 400
4 102 Pete 200
5 101 Pete 850
6 102 Bob 650
我想要的是查询还返回一个名为(差异)的附加字段,其中包含同一用户和作业的连续条目中的金额之间的差异。因此,我希望返回的数据如下:
ID Job User Amount Diff
1 101 Bob 100 100
2 101 Pete 500 500
3 102 Bob 400 400
4 102 Pete 200 200
5 101 Pete 850 350
6 102 Bob 650 250
在前四行中,Diff 与 Amount 相同,因为每行都是每个用户每个作业的第一个条目(因此,差异是参考有效的 nil 起始 Amount 计算的)。
最后两行包含先前出现在表中的用户和作业组合的信息,因此 Diff 计算如下:
Job 101 User Pete 850 - 500 = 350
Job 102 User Bob 650 - 400 = 250
我以前从来没有在 SQL 查询中比较过这样的行中的数据,所以我真的不知道从哪里开始。任何帮助将非常感激。
添加
请注意,金额不是运行总计。它是定期对用户在每个特定工作中输入的价值进行的主观评估。实际上,金额可能会从一个评估下降到下一个评估。我想要的是一个返回连续评估“金额”之间差异的查询。
替代解释
我希望返回评估金额的历史变动轨迹。另一个例子,查看单个 Job 和 User 如下:
Job User Amount Movement
101 Bob 100 100
101 Bob 500 400
101 Bob 400 (100)
101 Bob 1,000 600
但是,根据原始示例,需要从包含许多混合的作业和用户的表中提取此信息。