Hi  smile,
Refer the below test query for your reference.
SQL
CREATE TABLE #tblSetMarks(AdmissionNo INT, SubjectID INT,Marks INT,[Max] INT)
CREATE TABLE #tblDefSubject(SubjectID INT, SubjectName VARCHAR(20))
 
INSERT INTO #tblSetMarks (AdmissionNo , SubjectID ,Marks,[Max] )
SELECT 1,1,15,50
UNION ALL
SELECT 1,2,15,50
UNION ALL
SELECT 1,3,15,50
UNION ALL
SELECT 1,4,15,50
UNION ALL
SELECT 2,1,25,50
UNION ALL
SELECT 2,2,25,50
UNION ALL
SELECT 2,3,25,50
UNION ALL
SELECT 2,4,25,50
 
 
INSERT INTO #tblDefSubject
VALUES (1,'English')
,(2,'Math')
,(3,'Science')
,(4,'Urdu')
 
  
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @cols NVARCHAR(MAX) 
SELECT @cols= ISNULL(@cols + ',','') + QUOTENAME([SubjectName])
FROM (SELECT DISTINCT SubjectName FROM #tblSetMarks as sm inner join #tblDefSubject as ds on sm.SubjectID=ds.SubjectID) AS Course  
 
DECLARE @qry NVARCHAR(4000) 
SET @qry =
          N'
		  ;WITH cteStudentMarksDetails
			AS ( SELECT AdmissionNo
			     ,SUM(Marks) ObtainedMarks
				 ,SUM([Max]) TotalMarks
				 ,Round((SUM(Marks)) * 100/ SUM([Max]),1) as Percentage
				 ,(CASE WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 90 THEN ''A+''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 80 THEN ''A'' 
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 70 THEN ''B''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 60 THEN ''C''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 50 THEN ''D'' 
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 40 THEN ''E''
					    ELSE ''FAIL'' END ) AS Grade
				 ,(CASE WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 90 THEN ''OutStanding''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 80 THEN ''Excellent''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 70 THEN ''Very Good''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 60 THEN ''Good''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 50 THEN ''Satisfactory''
					    WHEN  Round((SUM(Marks)) * 100/ SUM([Max]),1) >= 40 THEN ''Work Hard''
					    ELSE ''FAIL'' END ) AS Remarks
				 FROM #tblSetMarks TA
				 GROUP BY AdmissionNo
			  )
		  SELECT distinct AdmissionNo
                  , ' + @cols + '
                  ,ObtainedMarks
				  ,TotalMarks
				  ,Percentage
				  ,Grade
				  ,Remarks
            FROM (SELECT AdmissionNo
                         ,SubjectName
                         , Marks
                         ,(SELECT ObtainedMarks FROM cteStudentMarksDetails csd Where  csd.AdmissionNo = sm.AdmissionNo) as ObtainedMarks
						 ,(SELECT Percentage FROM cteStudentMarksDetails csd Where  csd.AdmissionNo = sm.AdmissionNo) as Percentage 
						 ,(SELECT TotalMarks FROM cteStudentMarksDetails csd Where  csd.AdmissionNo = sm.AdmissionNo) as TotalMarks
						 ,(SELECT Grade FROM cteStudentMarksDetails csd Where  csd.AdmissionNo = sm.AdmissionNo) as Grade
						 ,(SELECT Remarks FROM cteStudentMarksDetails csd Where  csd.AdmissionNo = sm.AdmissionNo) as Remarks
                 FROM #tblSetMarks as sm
                 inner join #tblDefSubject as ds
                 on sm.SubjectID=ds.SubjectID) p                  
            PIVOT (MAX(Marks) FOR SubjectName IN ('+@cols+')) AS Pvt'
EXEC sp_executesql @qry
 
DROP TABLE #tblSetMarks
DROP TABLE #tblDefSubject
Output 
| AdmissionNo | English | Math | Science | Urdu | ObtainedMarks | TotalMarks | Percentage | Grade | 
| 1 | 15 | 15 | 15 | 15 | 60 | 200 | 30 | FAIL | 
| 2 | 25 | 25 | 25 | 25 | 100 | 200 | 50 | D |