tengo la siguiente consultapor/ordenado por
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);
que devuelve 3 columnas, pero datename(mm, orderdate)
devuelve una cadena y por lo tanto el pedido por ella pone agosto antes de enero etc.
La solución a este fue el siguiente:
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);
todavía estoy un poco confundido con todo el grupo por/ordenado por secciones y cómo funciona realmente.
Por lo que he entendido, agrupar por está creando una tabla de trabajo con 4 columnas (que podría estar mal) datepart(yy, orderdate), datename(mm, orderdate), datepart(mm, orderdate)
, y una columna count
.
Cada vez que encuentra un orderdate
que tiene en la mesa de trabajo aumenta el conteo, de lo contrario, agrega una nueva fila?
Originalmente pensé que podía eliminar el DateName(mm, orderdate)
dentro del grupo por sección, pero el libro decía que eso no era posible.
Si alguien puede ver lo que sucede detrás de escena/señalar un recurso que explica cómo funciona esto con un poco más de detalle, lo agradezco.
gracias por su ayuda.
¿Cuál es exactamente su pregunta? ¿Estás buscando una explicación de cómo está funcionando tu consulta? –
Estoy confundido en cuanto a cómo funciona esto y originalmente pensé que podría eliminar el DateName de la sección Group By. –
'order by orderdate' no funciona? ¿O usando 'datepart' en lugar de' datename' en la cláusula 'order'? – HABO