sql >> Base de Datos >  >> RDS >> Sqlserver

Invertir/Borrar un GRUPO POR

Puede administrar con una expresión de tabla común

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

Editar:

Se agregó MAXRECURSION para manejar situaciones en las que CountOfItems supera las recursiones máximas predeterminadas como lo señala Dev_etter