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

Kehren Sie ein GROUP BY um/blasen Sie es aus

Sie können mit einem gemeinsamen Tabellenausdruck auskommen

WITH CTE AS (
    SELECT OwnerNumber,ItemCode,ItemNumber,CountOfItems FROM table

    UNION ALL SELECT OwnerNumber,ItemCode,ItemNumber,CountOfItems-1
    FROM CTE
    WHERE CountOfItems >= 2
)
SELECT OwnerNumber,ItemCode,ItemNumber
FROM CTE
ORDER BY ItemNumber
OPTION (MAXRECURSION 0);

Bearbeiten:

MAXRECURSION hinzugefügt um Situationen zu handhaben, in denen CountOfItems die standardmäßigen maximalen Rekursionen überschreitet, wie von Dev_etter

angegeben