2010-01-25 115 views
3

我有一個訂單表,它有一個名爲order_date的日期時間列。我想在2009年計算每個月的訂單數量。我該怎麼做?計算一個月內的條目數

回答

6
select month(order_date) as orderMonth, count(*) as orderCount 
from order 
where year(order_date) = 2009 
group by month(order_date) 
order by month(order_date) 

爲了參考,見在Transact-SQL monthyear命令。

+0

感謝。我正在嘗試下面提到的kaleb,但它拒絕承認orderMonth作爲一個列! – Riz

+0

函數YEAR()和MONTH()的使用可能會使order_date上的任何可能的現有索引變得無法使用。表增長後,您將遇到性能問題。 –

+0

感謝您的評論。然而這只是一次性交易。某人請求的查詢。 – Riz

1
SELECT MONTH(order_date) AS ordermonth, 
    COUNT(*) AS ordercount 
FROM order 
WHERE YEAR(order_date) = 2009 
GROUP BY ordermonth; 
+0

這不起作用。 – jason

0

如何使用一些整潔的DATETIME技巧?

select 
    DATEADD(MONTH, DATEDIFF(MONTH, 0, order_date), 0) AS orderMonth, count(*) as orderCount 
from 
    [order] 
where 
    order_date >= '2009-01-01' 
group by 
    DATEADD(MONTH, DATEDIFF(MONTH, 0, order_date), 0) 
order by 
    orderMonth