Estoy utilizando Oracle SQL Developer. Esencialmente tengo una tabla de imágenes que contiene las columnas:
[DATE_CREATED(fecha), NUM_of_PICTURES(int)]
y si hago un select *, obtendría una salida similar a:
01-May-12 12
02-May-12 15
03-May-12 09
...
...
01-Jun-12 20
...
etc.
Estoy intentando agregar estas sumas de imágenes en números MENSUALES en lugar de DIARIOS.
I'he intentado hacer algo como:
select Month(DATE_CREATED), sum(Num_of_Pictures))
from pictures_table
group by Month(DATE_CREATED);
Esto produce un error:
ORA-00904: "MONTH": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 5 Column: 9
¿Tengo la función Mes mal?
Yo me inclinaría por incluir el año en la salida. De una manera:
select to_char(DATE_CREATED, 'YYYY-MM'), sum(Num_of_Pictures)
from pictures_table
group by to_char(DATE_CREATED, 'YYYY-MM')
order by 1
Otra forma (más SQL estándar):
select extract(year from date_created) as yr, extract(month from date_created) as mon,
sum(Num_of_Pictures)
from pictures_table
group by extract(year from date_created), extract(month from date_created)
order by yr, mon;
Recuerde el orden por, ya que es de suponer que desea que estos en orden, y no hay ninguna garantía sobre el orden en que las filas se devuelven después de un grupo por.
Para Oracle:
select EXTRACT(month from DATE_CREATED), sum(Num_of_Pictures)
from pictures_table
group by EXTRACT(month from DATE_CREATED);
Para MS SQL puede hacer esto.
select CAST(DATEPART(MONTH, DateTyme) as VARCHAR) +'/'+
CAST(DATEPART(YEAR, DateTyme) as VARCHAR) as 'Date' from #temp
group by Name, CAST(DATEPART(MONTH, DateTyme) as VARCHAR) +'/'+
CAST(DATEPART(YEAR, DateTyme) as VARCHAR)