ho la seguente querySQL Server/ordine da
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);
che restituisce 3 colonne, ma datename(mm, orderdate)
restituisce una stringa e quindi ordinare da essa mette agosto prima del gennaio ecc
La soluzione a questo era il seguente:
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);
Sono ancora un po 'confuso con l'intero gruppo da/ordinare per sezioni e come funziona effettivamente.
Per quanto ho capito, group by sta creando una tabella di lavoro con 4 colonne (che potrebbero essere errate) datepart(yy, orderdate), datename(mm, orderdate), datepart(mm, orderdate)
e una colonna count
.
Ogni volta che incontra uno orderdate
che ha nella tabella di lavoro aumenta il conteggio, altrimenti aggiunge una nuova riga?
Originariamente pensavo di poter rimuovere lo DateName(mm, orderdate)
all'interno del gruppo per sezione ma il libro diceva che non è possibile.
Se qualcuno può passare attraverso ciò che accade dietro le quinte/indicare una risorsa che spiega come funziona in un modo un po 'più dettagliato, lo apprezzo.
grazie per il vostro aiuto.
Qual è esattamente la tua domanda? Stai solo cercando una spiegazione su come funziona la tua query? –
Im semplicemente confuso su come funziona e originariamente pensavo di poter rimuovere il DateName dalla sezione Raggruppa per. –
"order by orderdate' non funziona? O usando 'datepart' piuttosto che' datename' nella clausola 'order'? – HABO