sql sub和grand total

时间:2011-07-01 14:00:02

标签: sql sql-server tsql sql-server-2008 totals

有没有一个很好的方法来获得总计 - 这个查询显示每天的子总数,但是如何在没有子查询或其他查询的情况下获得每个子总数的总计

还有比计算总和更好的东西吗?

SELECT loguser,logdate,logaction,logtime
FROM log WHERE loguser IN
('scott')   AND logdate  
BETWEEN '2011-06-01' AND '2011-06-15'   
ORDER BY logdate DESC    
COMPUTE SUM(logtime) BY logdate

SQL Server 2008 R2

3 个答案:

答案 0 :(得分:3)

我不熟悉COMPUTE,因为你已经习惯了它,但是这个(或它的变体)应该适用于大多数SQL方言......

SELECT loguser,logdate,logaction,SUM(logtime)
FROM log WHERE loguser IN
('scott')   AND logdate  
BETWEEN '2011-06-01' AND '2011-06-15'
GROUP BY loguser,logdate,logaction WITH ROLLUP
ORDER BY logdate DESC    

答案 1 :(得分:0)

获得总计的更好方法是使用前端......而不是查询。

答案 2 :(得分:0)

我认为你应该看看像Dems建议的那样使用ROLLUP而不是COMPUTE,但如果你想要的是返回3件事 - 1)每日日志时间数据,2)每日小计;然后,3)总计(小计的总数)然后我认为你需要UNION一个查询,它找到前两个查询,就像你查找总数的查询一样。