在SQL 中追加行和編號結果
如何擴展結果集以包含計數大於的每行的多行1、按順序編號?例如,考慮下表中的值和計數:
Value | Count |
---|---|
foo | 1 |
bar | 3 |
baz | 2 |
我們所需的輸出將是:
Value | Count | Index |
---|---|---|
foo | 1 | 1 |
bar | 3 | 1 |
bar | 3 | 2 |
bar | 3 | 3 |
baz | 2 | 1 |
baz | 2 | 2 |
要實現這種跨資料庫相容性,請考慮使用“ Numbers” table:
SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
此解產生一個數字序列,最多可達表中的最大計數。透過將原始表與 Numbers 表連接起來,我們可以有效地重複行並分配順序索引。以下是使用 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
以上是如何在 SQL 中根據計數追加行並依序編號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!