Since YTD is the longest span, you must use YTD span in your WHERE clause.
So your variables at top should be:
declare @DateFrom datetime , @dateTo datetime
set @datefrom = dateadd(mm, -month({fn curdate()})+1, {fn curdate()})
set @datefrom = dateadd(dd, -Day(@datefrom ) + 1, @datefrom)
set @dateto= {fn curdate()}
So using this in your WHERE clause brings YTD Data. Now you need to make a SUM with a CASE statement for YTD, MTD and WTD.
I don't know very well your field names, but if you follow this model you'll be fine:
SUM(YourTotalSales) AS YTD,
SUM(CASE WHEN SaleDate BETWEEN DateAdd(dd, -Day(@dateTo)+1, @dateTo) AND @dateTo
THEN YourTotalSales ELSE 0 END) AS MTD,
SUM(CASE WHEN SaleDate BETWEEN DateAdd(dd, -DATEPART(dw, @dateTo)+1, @dateTo) AND @dateTo THEN YourTotalSales ELSE 0 END) AS WTD
For the GROUP BY: by rule, if there is a field in the SELECT clause that is not part of an aggregate function, then it must go into the GROUP BY.
Just don't select the fields you don't want to group by and omit them from the GROUP BY clause and you'll do fine.