Anhängen von Zeilen und Nummerieren von Ergebnissen in SQL
Wie kann ich eine Ergebnismenge erweitern, um mehrere Zeilen für jede Zeile mit einer Anzahl größer als einzuschließen? 1, während Sie sie fortlaufend nummerieren? Betrachten Sie beispielsweise die folgende Tabelle mit Werten und Zählungen:
Value | Count |
---|---|
foo | 1 |
bar | 3 |
baz | 2 |
Unsere gewünschte Ausgabe wäre:
Value | Count | Index |
---|---|---|
foo | 1 | 1 |
bar | 3 | 1 |
bar | 3 | 2 |
bar | 3 | 3 |
baz | 2 | 1 |
baz | 2 | 2 |
Um diese datenbankübergreifende Kompatibilität zu erreichen, sollten Sie die Verwendung einer „Zahlen“ in Betracht ziehen. Tabelle:
SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
Diese Lösung generiert eine Folge von Zahlen bis zur maximalen Anzahl in der Tabelle. Indem wir die Originaltabelle mit der Zahlentabelle verbinden, wiederholen wir effektiv Zeilen und weisen sequentielle Indizes zu. Hier ist ein Beispiel mit Microsoft SQL Server:
WITH Numbers AS ( SELECT ROW_NUMBER() OVER (ORDER BY number) AS number FROM ( SELECT 1 AS number UNION ALL SELECT number + 1 FROM Numbers WHERE number < (MAX(count) OVER ()) ) AS Outer ) SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
Das obige ist der detaillierte Inhalt vonWie füge ich Zeilen hinzu und nummeriere sie in SQL basierend auf einer Zählung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!