Also not very, but not reliant on subqueries (table and column names are from AdventureWorks). The case statement returns 1 if it meets your criteria, 0 otherwise - then you simply summarize the results:
select sum(case when datediff(day, modifieddate, getdate()) <= 7 then 1 else 0 end) as '7days', sum(case when datediff(day, modifieddate, getdate()) > 7 and datediff(day, modifieddate, getdate()) <= 14 then 1 else 0 end) as '14days', sum(case when datediff(day, modifieddate, getdate()) > 14 and datediff(day, modifieddate, getdate()) <= 28 then 1 else 0 end) as '28days' from sales.salesorderdetail
Edit: The datiff function has been updated - the way it was written, it will return a negative number (provided that modifieddate was in the past), as a result of which all elements fall under the first case. Thanks to Andriy M for pointing out that
source share