Ajout de lignes et numérotation des résultats en SQL
Comment puis-je étendre un ensemble de résultats pour inclure plusieurs lignes pour chaque ligne avec un nombre supérieur à 1, tout en les numérotant séquentiellement ? Par exemple, considérons le tableau suivant avec les valeurs et les décomptes :
Value | Count |
---|---|
foo | 1 |
bar | 3 |
baz | 2 |
Le résultat souhaité serait :
Value | Count | Index |
---|---|---|
foo | 1 | 1 |
bar | 3 | 1 |
bar | 3 | 2 |
bar | 3 | 3 |
baz | 2 | 1 |
baz | 2 | 2 |
Pour obtenir cette compatibilité entre bases de données, envisagez d'utiliser un "Nombres". table :
SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
Cette solution génère une séquence de nombres jusqu'au nombre maximum dans le tableau. En joignant la table d'origine avec la table Numbers, nous répétons efficacement les lignes et attribuons des indices séquentiels. Voici un exemple utilisant 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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!