Prueba con esto
Código SQL
[-]select
sum(case day(fecha) when 1 then Kgs else 0 end) '1',
sum(case day(fecha) when 2 then Kgs else 0 end) '2',
sum(case day(fecha) when 3 then Kgs else 0 end) '3',
sum(case day(fecha) when 4 then Kgs else 0 end) '4',
sum(case day(fecha) when 5 then Kgs else 0 end) '5',
sum(case day(fecha) when 6 then Kgs else 0 end) '6',
sum(case day(fecha) when 7 then Kgs else 0 end) '7',
sum(case day(fecha) when 8 then Kgs else 0 end) '8',
sum(case day(fecha) when 9 then Kgs else 0 end) '9',
sum(case day(fecha) when 10 then Kgs else 0 end) '10',
sum(case day(fecha) when 11 then Kgs else 0 end) '11',
sum(case day(fecha) when 12 then Kgs else 0 end) '12',
sum(case day(fecha) when 13 then Kgs else 0 end) '13',
sum(case day(fecha) when 14 then Kgs else 0 end) '14',
sum(case day(fecha) when 15 then Kgs else 0 end) '15',
sum(case day(fecha) when 16 then Kgs else 0 end) '16',
sum(case day(fecha) when 17 then Kgs else 0 end) '17',
sum(case day(fecha) when 18 then Kgs else 0 end) '18',
sum(case day(fecha) when 19 then Kgs else 0 end) '19',
sum(case day(fecha) when 20 then Kgs else 0 end) '20',
sum(case day(fecha) when 21 then Kgs else 0 end) '21',
sum(case day(fecha) when 22 then Kgs else 0 end) '22',
sum(case day(fecha) when 23 then Kgs else 0 end) '23',
sum(case day(fecha) when 24 then Kgs else 0 end) '24',
sum(case day(fecha) when 25 then Kgs else 0 end) '25',
sum(case day(fecha) when 26 then Kgs else 0 end) '26',
sum(case day(fecha) when 27 then Kgs else 0 end) '27',
sum(case day(fecha) when 28 then Kgs else 0 end) '28',
sum(case day(fecha) when 29 then Kgs else 0 end) '29',
sum(case day(fecha) when 30 then Kgs else 0 end) '30',
sum(case day(fecha) when 31 then Kgs else 0 end) '31',
sum(Kgs) Total
from Recepcion me
RIGHT JOIN dIAS ON me.fecha=dias.fecha
where fecha between '20110101' and '20110131'
De todas maneras, antes de hacer nada, comprueba tal como te han dicho los compañeros que las joins te dan la información que quieres.
Es decir, un left join o un right join dependiendo de dónde pongas la tabla de días, deberá darte al menos un registro de cada día. Si en la tabla de datos no hay registros, el valor que sumas deberá ser nulo.
haz esto:
Código SQL
[-]
select D.Fecha, R.kgs
from Dias D
LEFT JOIN REcepcion R ON D.fecha=R.fecha
debe ofrecerte al menos un registro por día, tal como comentaba. A partir de aquí pones el group by , y luego formateas en filas o columnas tal y como ta han comentado.
Nos cuentas.
Saludos