I have a SQL query with a result like this:
value | count
------+------
foo | 1
bar | 3
baz | 2
Now I want to expand this so that each row with a count
larger than 1 occurs multiple times. I also need these rows to be numbered. So I would get:
value | count | index
------+-------+------
foo | 1 | 1
bar | 3 | 1
bar | 3 | 2
bar | 3 | 3
baz | 2 | 1
baz | 2 | 2
I have to make this work on all the major databases (Oracle, SQL Server, MySQL, PostgreSQL, and maybe more). So a solution that works across different databases would be ideal, but clever ways to make it work on any database are appreciated.
You could use a numbers table
SELECT value, count, number
FROM table
JOIN Numbers
ON table.count >= Numbers.number
Here is a SQLFiddle using MSSQL
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With