Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Inverter/explodir um GROUP BY


Você pode gerenciar com uma expressão de tabela comum
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:

Adicionado MAXRECURSION para lidar com situações em que CountOfItems excede as recursões máximas padrão, conforme apontado por Dev_etter