Consulta access suma columnas diferentes tablas

Tengo 3 tablas:

        tablac                                          tablat                                           tablad

----------------------------                     -------------------------------                -------------------------------

id   importe     fecha             id     importe      fecha                    id    importe     fecha

1    1500    21/07/2015        1       200      23/05/2015             1     300      12/07/2015

2     200     13/02/2015        2       230      01/05/2016             2     400      13/08/2016

3     340    11/03/2016         3       400      03/04/2016             3      700      02/09/2016

--     ---       -------------- etc

Necesito obtener este resultado de la suma de los importes son sus encabezados.

  sumac                            sumat                                sumad

    2040                                830                                    1400

Las tablas están relacionadas por el campo de texto id, común a las tres tablas, y los campos importe son moneda en todas las tablas. También la posibilidad de preguntar por año.

2 Respuestas

Respuesta
1

Crea una consulta, cambia a vista SQL y pega ésta sentencia SQL:

SELECT DSum("Importe","tablac") AS sumac, DSum("Importe","tablat") AS sumat, DSum("Importe","tablad") AS sumad;

Así ya tienes la consulta que te devuelve los totales de las 3 tablas, con esos encabezados que quieres.

Para que te pida el año:

SELECT DSum("Importe","tablac","Year([fecha])=" & [Año]) AS sumac, DSum("Importe","tablat","Year([fecha])=" & [Año]) AS sumat, DSum("Importe","tablad","Year([fecha])=" & [Año]) AS sumad;

Una puntualización: que estén o no relacionadas las tablas no influye para nada en el resultado.

Un saludo


Muchas gracias. Me ha servido perfecto. Solo una cosa más:

Como podría añadirle una columna donde apareciese el año de la consulta.

sumac        sumat         sumad     año

340             600              450          2015

Un saludo

Te lo pongo sobre la que pide el año:

SELECT DSum("Importe","tablac","Year([fecha])=" & [Escribe el año]) AS sumac, DSum("Importe","tablat","Year([fecha])=" & [Escribe el año]) AS sumat, DSum("Importe","tablad","Year([fecha])=" & [Escribe el año]) AS sumad, [Escribe el año] AS Año;

Pero ojo, que esas cantidades que pones como ejemplo no se corresponden con las del año, jejeje

Ya... Gracias de nuevo. Lo he modificado y me sale este error:

Lo interpretas?. Un saludo

No puedes poner "Año" como criterio y como nombre del campo, por eso te cambié [Año] por [Escribe el año]

Otra opción que tienes sería cambiar el AS Año por AS Ejercicio u otro nombre.

Es que soy muy novato.... Ahora me estoy peleando para añadirle el pedir el mes como segundo criterio en DSUM a ver si lo consigo antes de tener que pedirte más ayuda.

Un abrazo...

Por aquí andaré, pero te adelanto una pista: necesitas usar la función Month() y encadenar ambos criterios con el operador "AND". Y ten en cuenta que el mes que te pida el parámetro lo has de poner en número (de 1 a 12)

Socorro otra vez:

No me sale; le añado el segundo criterio pero lo estoy haciendo mal porque no me filtra el mes y no se porqué. La he dejado así probando con una sola tabla pero me suma toda la columna:

DSum("Importe","tablac","Year([fecha])=" & [Escribe el año]  and "Month[fecha]=" & [Escribe el mes]) AS sumac, [Escribe el año] AS Año, [Escribe el mes] AS Mes;

Perdona las molestias..............

NO es molestia. El error lo tienes en que el AND lo tienes que meter dentro de las comillas, así:

"Year([fecha])=" & [Escribe Año] & " AND Month(fecha)=" & [Escribe Mes]

Y la SQL completa te quedaría:

SELECT DSum("Importe","tablac","Year([fecha])=" & [Escribe Año] & " AND Month(fecha)=" & [Escribe Mes]) AS sumac, DSum("Importe","tablat","Year([fecha])=" & [Escribe Año] & " AND Month(fecha)=" & [Escribe Mes]) AS sumat, DSum("Importe","tablad","Year([fecha])=" & [Escribe Año] & " AND Month(fecha)=" & [Escribe Mes]) AS sumad, [Escribe Año] AS Año, [Escribe Mes] AS Mes

¡Gracias! Me has ayudado un montón. Un saludo

Buenos días de nuevo:

A ver si me puedes ayudar otro poco ahora con un informe que intento general desde la consulta anterior, la famosa de la suma de las 3 tablas. Bueno, pues cuando intento crear un informe a partir de la consulta, me da este error:

Entiendo que es problema del formato de la consulta, pero como podría hacer para poder integrar la opción de imprimir este resultado desde el panel de control?.

Muchas gracias por todo....

No hagas el informe sobre la consulta, en vez de eso, ponle 3 cuadros de texto independientes y los rellenas con la misma expresión que la que usas en la consulta (adaptada a lenguaje VBA).

Te dejo un archivo de ejemplo, en el que te pregunta mes y año y muestra los datos en un informe: http://filebig.net/files/vMzXDKiUhu

¡Gracias! De nuevo por todo. Ya voy cogiendo el tranquilo!

Saludos...

Quería decir tranquillo, pero el corrector lo cambió. Gracias.

Jejeje, te hubiera entendido igualmente sin la aclaración.

Respuesta
1

Construye una consulta de datos agrupados que puedes hacer con el asistente de Access y con las tres Tablas..

En la parrilla pones el Nombre que tu quieras para cada suma. Ejemplo los que tu mismo citas SumaC, SumaT, SumaD como fórmula pones:

SumaC:[TablaC]![Importe] y en la línea de Agrupación le pones Suma.

Otro modo >> SumaC:Suma([TablaC]![Importe]) y en agrupación le pones Expresión

Así en los tres casos. Mis saludos >> Jacinto

lo he intentado para una sola tabla añadiéndole:

SELECT DSum("Importe","tablac","Year([fecha])=" & [Escribe el año] AND "Month[.fecha])=" & [Escribe el mes]) AS sumac;

pero pasa del mes. Suma todo el año.....

Por la estructura que pones, interpreto que va dirigida a Sveinbjorn, y además viendo el historial, observo que él te ha guiado en la solución. Doy pués la pregunta cerrada por mi parte.

Si no acabas de resolverlo, generas otra pregunta y aquí estamos. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas