2010-01-25 10 views

Répondre

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) 

Pour référence, voir month et year commandes Transact-SQL.

+0

merci. J'essayais ce que kaleb a suggéré ci-dessous, mais il a refusé de reconnaître OrderMonth comme une colonne! – Riz

+0

L'utilisation des fonctions YEAR() et MONTH() est susceptible de rendre inutilisable tout index existant sur order_date. Vous rencontrerez des problèmes de performance une fois que la table se développera. –

+0

merci pour ce commentaire. Cependant, il s'agit d'une offre unique. une requête que quelqu'un a demandée. – Riz

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

Cela ne fonctionnera pas. – jason

0

Que diriez-vous d'utiliser une astuce 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 
Questions connexes