![]() |
Agrupar filas por meses en un DataTable Muy buenas de nuevo. Sigo dándole vueltas al mismo rollo de toquetear los DataTable. Bien, una vez conseguida una tabla con estos campos: Fecha, Factura e Importe me gustaría obtener otra en la que apareciera la suma de importes de cada mes. He probado directamente con esta cadena de selección de la base de datos: Código: SELECT Sum(Importe) FROM Tabla GROUP BY MONTH(CDATE(Fecha))Esto otro no resultó Código: SELECT Sum(Importe) FROM Tabla GROUP BY (MONTH(CDATE(Fecha)) AND YEAR(CDATE(Fecha)))Podría utilizar un filtro de la DataTable o DataView pero con el tema de las fechas es muy tedioso, pues, entre otras cosas no puedo usar la función Month() en el filtro. ¿Alguna idea? Gracias y un saludo. |
Pues tu idea en la consulta esta bien, lo que no se es si funcione, hasta donde yo se debería ser así: SELECT Sum(Importe) FROM Tabla GROUP BY (MONTH(CDATE(Fecha)), YEAR(CDATE(Fecha))) |
mmmmmm..... Me dice que hay un error de sintaxis en la coma. |
Que BD estas usando ? porque si es MSSQL solo basta con que lo hagas así: (sin el CDate) Cita:
|
:'( no, estoy utilizando Access. He cambiado la coma por un & y ya va bien, aunque tengo algunos otros problemillas. A ver si lo completo y lo pongo. Un saludo. |
Se me olvidaba, tengo que usar CDate porque el campo es de texto, no de tipo fecha. Esto no lo puedo cambiar así que tengo que hacer obligatoriamente la conversión antes. |
Bueno, pues ya está. Tengo que aplicar la función MAX(), aunque vale otra parecida, para que agrupe bien, puesto que no es suma ni cuenta. Os dejo el código completo: Código: strSel = "SELECT CSTR(MAX(MONTH(CDATE(FechaVisado)))) AS Mes, MAX(YEAR(CDATE(FechaVisado))) AS Año, COUNT(NumVisado) AS Visados, SUM(CDBL(CDBL(DerechosVisado)+CDBL(Legalizacion))) AS Importe FROM " & TablaBDInicial & " GROUP BY (MONTH(CDATE(FechaVisado)) & YEAR(CDATE(FechaVisado)))" |
De vuelta con estos lios de tablas, una cuestión. Una vez obtenido un DataView al que se le aplica un orden de filas, me gustaría crear una nueva tabla que mentuviera ese orden. Estoy intentando esto, pero salta error en la línea roja. Dice que la fila ya pertenece a otra tabla: Código: strSel = "SELECT CSTR(MAX(MONTH(CDATE(FechaVisado)))) AS Mes, MAX(YEAR(CDATE(FechaVisado))) AS Año, COUNT(NumVisado) AS Visados, SUM(CDBL(CDBL(DerechosVisado)+CDBL(Legalizacion))) AS Importe FROM " & TablaBDInicial |
| La zona horaria es GMT -6. Ahora son las 09:51. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.