Principales respuestas
Agrupar u Over con dos campos sql server

Pregunta
-
Hola a todos buenas noches una manito por favor, tengo esta consulta en sql server cuando agrupo y solo por un campo funciona perfectamente. pero cuando agrego la fecha para que me agrupe por servicio y por mes ya no me sale el resultado
esta es la consulta que tengo
select DISTINCT MONTH(CAST(A.FechaMovimiento AS date)), sum(A.MontoIngreso) from tblMovimientosContables A JOIN tblServicios b on a.Movimiento_Id = b.Id where MontoIngreso > 0 group by A.FechaMovimiento
por ejemplo mi resultado que deseo obtener esl
ventas | 6 | 10.000
ventas | 7 | 5.000
6 es Junio y 7 Julio
por favor me pueden ayudar
Les agradezco.
RM
Respuestas
-
Si agrupas por A.FechaMovimiento te sale un grupo por cada fecha, no por el mes de la fecha, que aparentemente es lo que deseas. Para que te agrupe por mes tienes que usar
group by MONTH(CAST(A.FechaMovimiento AS date))
y deberías quitar el DISTINCT, que no tiene ningún sentido para una consulta de este tipo. Si te salen registros repetidos, quiere decir que algo estás haciendo mal en la selección o la agrupación. Lo que hay que hacer es identificar qué es lo que falla y corregirlo, no intentarlo "arreglar" con un DISTINCT.
- Propuesto como respuesta Javi Fernández F jueves, 16 de julio de 2020 8:04
- Marcado como respuesta Roberto C. Melgar domingo, 30 de agosto de 2020 0:53
Todas las respuestas
-
Si agrupas por A.FechaMovimiento te sale un grupo por cada fecha, no por el mes de la fecha, que aparentemente es lo que deseas. Para que te agrupe por mes tienes que usar
group by MONTH(CAST(A.FechaMovimiento AS date))
y deberías quitar el DISTINCT, que no tiene ningún sentido para una consulta de este tipo. Si te salen registros repetidos, quiere decir que algo estás haciendo mal en la selección o la agrupación. Lo que hay que hacer es identificar qué es lo que falla y corregirlo, no intentarlo "arreglar" con un DISTINCT.
- Propuesto como respuesta Javi Fernández F jueves, 16 de julio de 2020 8:04
- Marcado como respuesta Roberto C. Melgar domingo, 30 de agosto de 2020 0:53
-
select MONTH(CAST(A.FechaMovimiento AS date)) Mes ,b.NombreServicio,sum(A.MontoIngreso) Monto from tblMovimientosContables A JOIN tblServicios b on a.Movimiento_Id = b.Id where MontoIngreso > 0 group by MONTH(CAST(A.FechaMovimiento AS date)),b.NombreServicio
--- Muchas gracias Alberto Poblacion,
RM