- :
:
DECLARE @tbl TABLE(Animal varchar(100), Count INT, Color VARCHAR(100))
INSERT INTO @tbl
VALUES
('Dog',2,'brown'),
('Cat',4,'black')
cte + cross. :
DECLARE @max INT=(SELECT MAX(Count) FROM @tbl);
;WITH Nbrs ( n ) AS (
SELECT 1 UNION ALL
SELECT 1 + n FROM Nbrs WHERE n < @max )
SELECT
t.Animal,
t.Count,
t.Color
FROM
@tbl as t
CROSS APPLY
(
SELECT * FROM Nbrs WHERE Nbrs.n<=t.Count
) AS f
ORDER BY t.Animal DESC
Dog 2 brown
Dog 2 brown
Cat 4 black
Cat 4 black
Cat 4 black
Cat 4 black