我有一個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