How to subtotal a result while retaining detail (SQL Server/MySQL)

I recently needed to produce a query with detail and have it subtotal by employee, by date. Subtotals can be difficult if you have data that varies within the subtotalled group.
The work around is to union queries. One query with the detail and another query with the subtotal by the control break you need. We then use a case condition in the order by clause to cause our subtotal to appear where we want it in the result.
The following example will work in SQL Server or MySQL.
SELECT fname+' '+lname AS Name, act_date, task_code, task_type, descr, hours, name, billable
FROM
(
SELECT E.fname, E.lname, ET.act_date, cast(ET.task_code as varchar) task_code, T.task_type, T.descr, ET.hours, C.name, T.billable, user_id
FROM empl_time ET
LEFT JOIN Task T ON ET.task_code = T.task_code
LEFT JOIN Employee E on ET.emp_code = E.emp_code
LEFT JOIN Customer C on T.customer_code = C.customer_code
UNION
SELECT E.fname, E.lname, ET.act_date, '', '', '*** Total ***', SUM(ET.hours), '', '', user_id
FROM empl_time ET
LEFT JOIN Task T ON ET.task_code = T.task_code
LEFT JOIN Employee E on ET.emp_code = E.emp_code
LEFT JOIN Customer C on T.customer_code = C.customer_code
group by E.fname, E.lname, ET.act_date, user_id
) x
ORDER BY lname, act_date, case when task_code = '' then 2 else 1 end
References
SQL Server Select
SQL Server From
SQL Server Left Join
SQL Server Group By
SQL Server Order By
SQL Server Cast / Convert
