Try the following tsql
Query :-
DECLARE @ID NVARCHAR(300)= '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20';
DECLARE @Marks NVARCHAR(300)= '0,70,52,5,8,9,4,6,7,3,5,2,7,1,9,4,0,2,5,0';
INSERT INTO Grade (PersonId,Marks)
SELECT PersonId,
Marks
FROM
(
SELECT aSplit.a.value('.', 'NVARCHAR(MAX)') PersonId,
ROW_NUMBER() OVER(ORDER BY
(
SELECT 1
)) AS row_no
FROM
(
SELECT CAST('<X>'+REPLACE(@ID, ',', '</X><X>')+'</X>' AS XML) AS PersonId,
CAST('<X>'+REPLACE(@Marks, ',', '</X><X>')+'</X>' AS XML) AS Marks
) AS A
CROSS APPLY PersonId.nodes('/X') AS aSplit(a)
) AS P
FULL OUTER JOIN
(
SELECT bSplit.a.value('.', 'NVARCHAR(MAX)') Marks,
ROW_NUMBER() OVER(ORDER BY
(
SELECT 1
)) AS row_no
FROM
(
SELECT CAST('<X>'+REPLACE(@ID, ',', '</X><X>')+'</X>' AS XML) AS PersonId,
CAST('<X>'+REPLACE(@Marks, ',', '</X><X>')+'</X>' AS XML) AS Marks
) AS A
CROSS APPLY Marks.nodes('/X') AS bSplit(a)
) AS M ON P.row_no = M.row_no;
Result :
PersonId Marks
1 0
2 70
3 52
4 5
5 8
6 9
7 4
8 6
9 7
10 3
11 5
12 2
13 7
14 1
15 9
16 4
17 0
18 2
19 5
20 0