I do not understand your data but this should get you started:
-- *** Test Data ***
CREATE TABLE #t
(
[system] varchar(20) NOT NULL
,[date] date NOT NULL
,level1 int NOT NULL
,result int NOT NULL
,overallScore int NOT NULL
);
INSERT INTO #t
VALUES ('red', '20171101', 1, 10, 5)
,('red', '20171101', 2, 2, 3)
,('pop', '20171101', 1, 3, 1)
,('pop', '20171101', 2, 1, 1)
,('red', '20171102', 1, 3, 1)
,('red', '20171102', 2, 1, 2)
,('pop', '20171102', 1, 5, 7)
,('pop', '20171102', 2, 10, 8);
-- *** End Test Data ***
SELECT D.[system], T.[Type], D.[date]
,MAX(X.Level1) AS Level1
,MAX(X.Level2) AS Level2
,MAX(X.Level1) - MAX(X.Level2) AS [Difference]
FROM #t D
CROSS JOIN (SELECT 'Result' UNION ALL SELECT 'OverallScore') T ([Type])
CROSS APPLY
(
VALUES
(
CASE
WHEN D.level1 = 1 AND T.[Type] = 'Result'
THEN D.result
WHEN D.level1 = 1 AND T.[Type] = 'OverallScore'
THEN D.overallScore
END
,CASE
WHEN D.level1 = 2 AND T.[Type] = 'Result'
THEN D.result
WHEN D.level1 = 2 AND T.[Type] = 'OverallScore'
THEN D.overallScore
END
)
) X (Level1, Level2)
GROUP BY D.[system], T.[Type], D.[date]
ORDER BY [date], [system] DESC, [Type] DESC;