Zunächst einmal haben die Daten in SQL per Definition keine Reihenfolge außer dem ORDER BY
verwendet wird.
Siehe:Wikipedia - Bestellen nach
Sie müssen Ihrer Tabelle eine zusätzliche Spalte hinzufügen, die die Reihenfolge bestimmt und in ORDER BY
verwendet werden kann -Klausel, zum BeispielRN
Spalte im folgenden Beispiel:
RN CS_ID
---------- ----------
1 a
2 b
3 a
4 a
5 a
6 b
7 b
8 b
9 b
Für die obigen Daten können Sie Common Table Expression (rekursive Abfrage) verwenden, um das erforderliche Ergebnis zu erhalten, zum Beispiel funktioniert die folgende Abfrage auf einer Oracle-Datenbank:
WITH my_query( RN, cs_id , cont ) AS (
SELECT t.rn, t.cs_id, 1
FROM My_table t
WHERE rn = 1
UNION ALL
SELECT t.rn, t.cs_id,
case when t.cs_id = m.cs_id
then m.cont + 1
else 1
end
FROM My_table t
JOIN my_query m
ON t.rn = m.rn + 1
)
select * from my_query
order by rn;
RN CS_ID CONT
---------- ---------- ----------
1 a 1
2 b 1
3 a 1
4 a 2
5 a 3
6 b 1
7 b 2
8 b 3
9 b 4