I have a table that I\'m trying to break out each row into one or more rows based on the second column value. Like this:
table (id, pcs): ABC 3 DEF 1 GH
You can use a recursive CTE:
;WITH CTE AS ( SELECT * FROM YourTable UNION ALL SELECT id, pcs-1 FROM CTE WHERE pcs-1 >= 1 ) SELECT * FROM CTE ORDER BY id, pcs OPTION(MAXRECURSION 0)
Here is a demo for you to try.