この質問の見出しは、デモデータを提供する以外に、私が欲しいものを簡潔に説明するのが難しいと感じているため、おそらく言葉遣いが不十分です.
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
私が望むのは、クエリが (Difference) という追加フィールドも返すことです。これには、同じユーザーとジョブの連続するエントリの金額の違いが含まれます。したがって、返してほしいデータは次のようになります。
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
最初の 4 行では、Diff は Amount と同じです。これは、各行が Job ごとの User ごとの最初のエントリであるためです (したがって、差分は有効なゼロの開始 Amount を参照して計算されます)。
最後の 2 行には、前にテーブルに表示されたユーザーとジョブの組み合わせに関する情報が含まれているため、Diff は次のように計算されます。
Job 101 User Pete 850 - 500 = 350
Job 102 User Bob 650 - 400 = 250
これまで SQL クエリでこのような行のデータを比較する必要がなかったので、どこから始めればよいかわかりません。どんな助けでも大歓迎です。
追加した
金額は現在の合計ではないことに注意してください。これは、特定のジョブごとにユーザーが入力した値を定期的に主観的に評価するものです。実際には、ある評価から次の評価に金額が下がる可能性があります。私が欲しいのは、連続する評価「金額」の差を返すクエリです。
代替説明
査定額の動きの履歴証跡を返したいと思っています。したがって、別の例として、単一のジョブとユーザーを見ると、次のようになります。
Job User Amount Movement
101 Bob 100 100
101 Bob 500 400
101 Bob 400 (100)
101 Bob 1,000 600
ただし、元の例のように、この情報は、すべてが混在する多くのジョブとユーザーを含むテーブルから抽出する必要があります。