Le groupe SQL Server par/ de la commande par

J'ai la requête suivante

select
    datepart(yy, orderDate) as 'year',
    datename(mm, OrderDate) as 'month',
    count(*) as 'Orders'
from orders     (yeah I know its missing the schema, its from a book)
group by
    datepart(yy, orderdate),
    datename(mm, orderdate)
order by
    datepart(yy, orderdate),
    datename(mm, orderdate);

qui renvoie 3 colonnes mais datename(mm, orderdate) retourne une chaîne de caractères et donc de la commande par il met en août, avant janvier etc.

La solution à ce problème est la suivante:

select
    datepart(yy, orderDate) as 'year',
    datename(mm, OrderDate) as 'month',
    count(*) as 'Orders'
from orders  (yeah i know its missing the schema, its from a book)
group by
    datepart(yy, orderdate),
    datename(mm, orderdate),
    datepart(mm, orderdate)
order by
    datepart(yy, orderdate),
    datepart(mm, orderdate);

Je suis encore un peu confus avec le groupe en entier /de la commande par sections et comment il fonctionne réellement.

Que ce que j'ai compris, groupe par la création d'une table de travail avec 4 colonnes (qui peut être erroné) datepart(yy, orderdate), datename(mm, orderdate), datepart(mm, orderdate), et un count colonne.

Chaque fois qu'il rencontre un orderdate qu'il a dans la table de travail, il augmente le comte,
sinon, il ajoute une nouvelle ligne?

À l'origine, je pensais que je pouvais enlever la DateName(mm, orderdate) dans le groupe par la section mais le livre dit que ce n'est pas possible.

Si quelqu'un pouvait étape à travers ce qui se passe réellement derrière les coulisses/point une ressource qui explique comment cela fonctionne en détail un peu plus de l'id de l'apprécier.

merci pour votre aide.

Quel est exactement votre question? Êtes-vous simplement à la recherche d'une explication de la façon dont votre requête est en train de travailler?
Je suis tout à fait confus quant à la façon dont cela fonctionne, et à l'origine je pensais que je pouvais enlever la DateName du Groupe Par la section.
order by orderdate ne fonctionne pas? Ou à l'aide de datepart plutôt que datename dans le order clause?
Afficher un exemple du résultat souhaité.

OriginalL'auteur Hans Rudel | 2012-06-07