Menambahkan Baris dan Hasil Penomboran dalam SQL
Bagaimana saya boleh mengembangkan set hasil untuk memasukkan berbilang baris untuk setiap baris dengan kiraan yang lebih besar daripada 1, sambil menomborkannya secara berurutan? Sebagai contoh, pertimbangkan jadual berikut dengan nilai dan kiraan:
Value | Count |
---|---|
foo | 1 |
bar | 3 |
baz | 2 |
Output yang kami kehendaki ialah:
Value | Count | Index |
---|---|---|
foo | 1 | 1 |
bar | 3 | 1 |
bar | 3 | 2 |
bar | 3 | 3 |
baz | 2 | 1 |
baz | 2 | 2 |
Untuk mencapai keserasian merentas pangkalan data ini, pertimbangkan untuk menggunakan "Nombor" jadual:
SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
Penyelesaian ini menjana urutan nombor sehingga kiraan maksimum dalam jadual. Dengan menggabungkan jadual asal dengan jadual Nombor, kami mengulangi baris dengan berkesan dan menetapkan indeks berjujukan. Berikut ialah contoh menggunakan 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
Atas ialah kandungan terperinci Bagaimana untuk Menambah Baris dan Nomborkannya Secara Berjujukan dalam SQL Berdasarkan Kiraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!