Try this:
SELECT WeekOfYear, [Sun] = MAX(CASE WHEN DayOfWeek=1 THEN NewVal ELSE NULL END),
[Mon] = MAX(CASE WHEN DayOfWeek=2 THEN NewVal ELSE NULL END),
[Tue] = MAX(CASE WHEN DayOfWeek=3 THEN NewVal ELSE NULL END),
[Wed] = MAX(CASE WHEN DayOfWeek=4 THEN NewVal ELSE NULL END),
[Thu] = MAX(CASE WHEN DayOfWeek=5 THEN NewVal ELSE NULL END),
[Fri] = MAX(CASE WHEN DayOfWeek=6 THEN NewVal ELSE NULL END),
[Sat] = MAX(CASE WHEN DayOfWeek=7 THEN NewVal ELSE NULL END)
FROM
(
SELECT DATEPART(DW, [Date]) DayOfWeek,
DATEPART(WK, [Date]) WeekOfYear,
[Day],
CONCAT([Date], '->', COALESCE([Values], 0)) AS [NewVal]
FROM MyTable
) T
GROUP BY WeekOfYear
db<>fiddle[
^]