One possible solution would be a recursive CTE:
WITH cte As
(
SELECT
Emp_ID,
Emp_FullName,
CASE WHEN leaves < 12 THEN leaves ELSE 12 END As leaves,
leaves - 12 As Remaining
FROM
YourTable
UNION ALL
SELECT
Emp_ID,
Emp_FullName,
CASE WHEN Remaining < 12 THEN Remaining ELSE 12 END,
Remaining - 12
FROM
cte
)
SELECT
Emp_ID,
Emp_FullName,
leaves
FROM
cte
;
However, by default you will get an error if a single row produces more than 100 output rows.
Another option would be to use a "numbers" or "tally" table:
WITH cteTally As
(
SELECT
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1 As N
FROM
sys.all_columns
),
cteRanges As
(
SELECT
12 As Size,
N * 12 As StartValue,
(N + 1) * 12 As EndValue
FROM
cteTally
)
SELECT
E.Emp_ID,
E.Emp_FullName,
CASE
WHEN E.leaves > R.EndValue THEN R.Size
ELSE E.leaves - R.StartValue
END As leaves
FROM
YourTable As E
CROSS APPLY cteRanges As R
WHERE
T.leaves > R.StartValue
ORDER BY
E.Emp_ID,
R.StartValue
;