This is what you are looking for :
DECLARE @Student TABLE(
ID int,
Name VARCHAR(100)
)
INSERT INTO @Student SELECT '1','ABC'
INSERT INTO @Student SELECT '2','XYZ'
INSERT INTO @Student SELECT '3','PQR'
DECLARE @Subject TABLE(
ID int,
Name VARCHAR(100)
)
INSERT INTO @Subject SELECT '10','Maths'
INSERT INTO @Subject SELECT '11','Science'
INSERT INTO @Subject SELECT '12','English'
DECLARE @Marks TABLE(
SID int,
SBID int,
MARKS int
)
INSERT INTO @Marks SELECT '1','10','60'
INSERT INTO @Marks SELECT '1','11','80'
INSERT INTO @Marks SELECT '1','12','90'
INSERT INTO @Marks SELECT '2','10','50'
INSERT INTO @Marks SELECT '2','11','40'
INSERT INTO @Marks SELECT '2','12','30'
INSERT INTO @Marks SELECT '3','10','45'
INSERT INTO @Marks SELECT '3','11','49'
INSERT INTO @Marks SELECT '3','12','25'
DECLARE @FinalResult TABLE(
Name VARCHAR(100),
Maths_Marks int,
Science_Marks int,
English_Marks int
)
INSERT INTO @FinalResult
select
S.name,
M.MARKS as Maths_Marks,
(
select M2.MARKS as 'Science_Marks' from @Student S2
join @Marks M2 on M2.SID = S2.ID
join @Subject SB2 on SB2.ID = M2.SBID
where SB2.Name ='Science'
and S2.ID = S.ID
) as Science_Marks,
(
select M2.MARKS as 'English_Marks' from @Student S2
join @Marks M2 on M2.SID = S2.ID
join @Subject SB2 on SB2.ID = M2.SBID
where SB2.Name ='English'
and S2.ID = S.ID
) as English_Marks
from @Student S
join @Marks M on M.SID = S.ID
join @Subject SB on SB.ID = M.SBID
where SB.Name ='Maths'
SELECT *,fn2.Maths_Marks + fn2.English_Marks +fn2.Science_Marks as Total ,
CASE WHEN fn2.Maths_Marks > 50 THEN 'P'
ELSE 'F'
END AS Status
from @FinalResult fn2
And finally the Result looks like :
