Hola cbyto:
Humildemente creo que los compañeros Heimish2000 y Libras están complicando demasiado las alternativas que proponen, pues creo que no hay necesidad ni de crear una columna adicional con CASE como propone Heimish2000, ni tampoco hay necesidad de hacer una subconsulta, como lo propone Libra. Creo que puedes obtener el resultado esperado de manera directa, prueba con esto:
Código SQL:
Ver originalSET LANGUAGE spanish
DECLARE @Tabla TABLE (id_cod INT, Fecha datetime, Descrip VARCHAR(50), Vta_b FLOAT, Vta_n FLOAT, dto FLOAT, canti INT)
INSERT INTO @Tabla VALUES (1, '20/04/2011', 'Lapiz azul', 10.00,10.00, 0.00, 1)
INSERT INTO @Tabla VALUES (2, '02/05/2011', 'Lapiz negro', 5.00, 5.00, 0.00, 2)
INSERT INTO @Tabla VALUES (3, '03/05/2011', 'Lapiz azul', 10.00, 8.00, 2.00, 1)
INSERT INTO @Tabla VALUES (4, '05/05/2011', 'Lapiz negro',10.00, 9.00, 1.00, 2)
SELECT datename(m, Fecha), descrip,
SUM(Vta_b) Total_Vta_b, SUM(Vta_n) Total_Vta_n, SUM(dto) Total_dto, SUM(canti) total_canti
FROM @Tabla
GROUP BY datename(m, Fecha), descrip
esta línea
sirve para poner por defecto los nombres de los meses en español y te permite capturar las fechas en formato dd/mm/yyyy.
Haz la prueba y nos comentas los resultados.
Saludos
Leo.