Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Inverser / Souffler un GROUP BY

Vous pouvez gérer avec une expression de table commune

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

Modifier :

MAXRECURSION ajouté pour gérer les situations où CountOfItems dépasse le nombre maximal de récursions par défaut, comme indiqué par Dev_etter