我有一个SQL 2005表,让我们把它的订单,格式为:SQL组,显示订单每天
OrderID, OrderDate, OrderAmount
1, 25/11/2008, 10
2, 25/11/2008, 2
3, 30/1002008, 5
然后,我需要产生一个报告表显示在每个订购量一天,在最后7天:
Day, OrderCount, OrderAmount
25/11/2008, 2, 12
26/11/2008, 0, 0
27/11/2008, 0, 0
28/11/2008, 0, 0
29/11/2008, 0, 0
30/11/2008, 1, 5
SQL查询,通常会产生这样的:
select count(*), sum(OrderAmount)
from Orders
where OrderDate>getdate()-7
group by datepart(day,OrderDate)
具有中存在的问题它会跳过那里有没有订单的日子:
Day, OrderCount, OrderAmount
25/11/2008, 2, 12
30/11/2008, 1, 5
通常我会这样使用符合表和外固定加入对行那里,但我真的很为这个简单的或更有效的解决方案。对于报表查询来说,这似乎是一种常见的要求,应该已经有一些优雅的解决方案可用。
所以:1.这个结果可以从一个简单的查询中获得而不使用Tally表吗?
和2.如果否,我们可以创建这个计数表(可靠地)在飞行中(我可以使用CTE创建一个计数表,但递归堆栈限制我为100行)?
你选择例如省略了最新信息。 – 2008-11-30 22:21:18
SQL group by day, 夜间犯罪战斗队 – 2008-12-01 22:20:45