You can use OVER , something like:
QUERY
select distinct Id, sum(Hours) over (partition by SimId) Hours, sum(Points) over (partition by SimId) Points, SimId from
SAMPLE DATA
create table
OUTPUT
Id Hours Points SimId 787 100 8 214858 787 100 8 233562
UPDATE
This is because you did not provide sample data that you can do with CTE in the following:
WITH cte AS ( SELECT SUBJECT_ID, SUM(SOMETABLE.COLUMN) AS HOURS, SUM(SOMETABLE3.COLUMN) AS POINTS, SEMESTER_ID FROM SOME_TABLES WHERE (GROUP = (SELECT TOP (1) GROUP FROM SOMETABLE2 WHERE (STUDENT_ID = 123))) GROUP BY SUBJECT_ID, SEMESTER_ID HAVING (SUBJECT_ID = 12) ) SELECT DISTINCT SUBJECT_ID, sum(Hours) over (partition by SEMESTER_ID) Hours, sum(Points) over (partition by SEMESTER_ID) Points, SEMESTER_ID FROM cte
UPDATE 2
You can create #temp_table and insert data from your selection request, after using CTE in the following:
;WITH cte AS ( SELECT * FROM
source share