Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann ich eine Zeile in eine Ergebnismenge mit mehreren Zeilen erweitern?

Sie können einen rekursiven CTE verwenden:

;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)

Hier ist eine Demo zum Ausprobieren.