So finden Sie negative Zahl in einer Spalte, gefolgt von einer positiven Zahl
Habe ich eine historische Tabelle XY
mit diesen Inhalten:
ID Person_ID Balance_on_account ts
---- ----------- -------------------- ----------
01 05 +10 10.10.14
02 05 -10 20.10.14
03 05 -50 30.10.14
04 05 +50 30.10.14
05 05 -10 30.10.14
06 06 11 11.10.14
07 06 -40 15.10.14
08 06 +5 16.10.14
09 06 -10 30.10.14
und ich brauche zum erstellen einer SQL-Abfrage, die mir diese Person_ID
's und timestamps wo sind
- a)
Balance_on_account
negativ ist - das ist die einfache, - b) und gleichzeitig ist die Aufzeichnung der negativen
Balance_on_account
gefolgt von einer positiven Zahl.
Wie für Person_ID = 05
ich hätte die Zeile mit ID = 05
, und für Person_ID = 06
die Zeile mit ID = 09
.
- Bitte fügen Sie einen tag, um die spezifische Datenbank-Plattform Sie verwenden
- Hallo, tut mir Leid. Ich verwende eine Oracle Developer
- dein Beispiel ist ein bisschen verwirrend. Zeilen 05 und 09 sind die letzten Zeilen von person_ids 05 und 06.
- Ja, das ist richtig. Ich wollte zeigen so deutlich wie möglich, dass ich NICHT wollen, für Person_ID 05 Zeile 02, und für Person_ID 06 Zeile 07. Der Grund ist, ich brauche, um zu sehen, wie viele Tage jeder Person_ID in der Schuld. Ich hoffe, dass ist jetzt klar, wenn nicht, einfach Fragen, ich so schnell wie möglich beantworten, so gut ich kann 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich es nie benutzt, aber Sie könnten versuchen, analytische LEAD-Funktion
FÜHREN, können Sie den Zugriff auf die folgenden Zeilen in einer Abfrage, ohne Sie zu verbinden mit sich selbst.
PARTITION, INDEM Gruppen von Zeilen Person_ID, damit es nicht mischen verschiedenen Personen Salden und ORDER BY definiert die Reihenfolge innerhalb jeder Gruppe.
Die Filterung kann nicht getan werden, in der inneren Abfrage, weil es würde herausfiltern von Zeilen mit positiven Saldo.
next_balance null sein wird für die Letzte Zeile.
Quelle analytische Funktionen und FÜHREN
Sollten Sie die folgende Abfrage geben Sie die erwarteten Ergebnisse, die die Datenbank-Plattform Sie verwenden unterstützt
Common Table Expressions
undWindow Functions
z.B. SQL-Server 2008 und höher.SqlFiddle