- : Die ID des MitarbeiterCode: Select all employee_id
- : Der Transaktionsbetrag (kann positiv oder negativ sein, basierend auf dem Grund)Code: Select all amount
- : Eine Beschreibung der TransaktionCode: Select all reason
- : Der Zeitstempel, wenn die Transaktion auftratCode: Select all created_at
Start Balance < /th>
Änderung < /th>
Endgültiges Gleichgewicht < /th>
< /tr>
< /thead>
0 < /td>
+50 < /td>
50 < /td>
< /tr>
50 < /td>
-15 < /td>
35 < /td> < Br /> < /tr>
35 < /td>
+10 < /td>
45 < /td >
< /tr>
45 < /td>
-5 < /td>
40 < /td>
Meine SQL -Abfrage (nicht wie erwartet funktioniert)
Ich habe versucht, eine Fensterfunktion zu verwenden, um das vorherige Gleichgewicht, die Änderung und das endgültige Gleichgewicht zu berechnen, aber die Ergebnisse sind falsch: < /p>
Code: Select all
SELECT
id,
employee_id,
COALESCE(LAG(SUM(amount)) OVER (ORDER BY created_at ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 0) AS prev_amount,
amount AS change,
SUM(amount) OVER (ORDER BY created_at ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS final_amount
FROM settlement_settlement
GROUP BY id
ORDER BY created_at;
 Mobile version
 Mobile version