Consulta por fechas sin datos innecesarios

Lo primero decir que soy un novatillo en esto de las bases de datos. Esoy inentador crear una base que sirva para controlar a proveedores. En principio cuenta con los siguientes campos: LOCAL, FECHA, PROVEEDOR, IMPORTE y OBSERVACIONES.
Ojeando el foro vi como hacer un formulario donde se mete el intrevalo de fechas que se quiere controlar. Este formulario volcaba las fechas a una consulta con la expresión :Entre [Forms]![Formulario1]![fechainicial] Y [Forms]![Formulario1]![fechafinal].
El resultado es correcto pero el problema es que me repite datos, por ejemplo me pone:
¿Proveedor1 100?
¿Proveedor1 300?
¿Proveedor 2 1000?
¿Proveedor2 20?
¿Hay alguna forma de que de de los resultados englobando a cada proveedor? Algo así
¿Proveedor1 400?
¿Proveedor 2 1020?

1 Respuesta

Respuesta
1
No se en que gestor de bases de datos estas trabajando porque no lo especificas, pero existe un lenguaje de consulta estándar que podrías usar "SQL", mediante una sencilla instrucción puedes generar tu consulta, para tu caso seria algo como esto:
SELECT proveedor, SUM(importe) AS TOTAL FROM nombre_de_tu_tabla GROUP BY proveedor
Si sabes donde colocar esta instrucción solo hazlo y esto sera suficiente, si tienes duda devuélveme este mensaje indicando en que gestor o programa estas trabajando tu base de datos para poderte ayudar.
Éxitos y saludos desde Cúcuta - Colombia
Hola y gracias por tu ayuda. El programa que utilizo para crear la base es Microsoft Access 2007. Tu respuesta me ayuda parcialmente ya que me da el total por proveedores pero no puedo ajustarlo a un intervalo de fechas.
Un saludo y gracias
Ok, nos hace falta agregarle a la sentencia SQL la clausula WHERE, quedaría así:
SELECT proveedor, SUM(importe) AS TOTAL FROM nombre_de_tu_tabla WHERE fecha>[Forms]![Formulario1]![fechainicial] AND fecha <= [Forms]![Formulario1]![fechafinal] GROUP BY proveedor
PERFECTO. Una ultima cosa, y agradeciendo tu paciencia, tengo un campo llamado "LOCAL" . Este campo se refiere a distintos centros donde el proveedor deja la mercancía. ¿Seria posible que en la misma búsqueda me pusiera el total por porveedor y el total por LOCAL? Algo así
Proveedores total local1 local2 local3
proveedor1         100          50             20        30
proveedor2          150        150              0          0
proveedor3           20           2                7           18
Un Saludo y muchas gracias.
¿Qué tantos locales puedes llegar a manejar en tu tabla?, ¿Son solo tres o podrían ser más?, ¿Cuántos?, de acuerdo a tu respuesta podemos modificar la sentencia SQL para que te arroje el resultado deseado...
Hola de nuevo. El campo "LOCAL" tiene actualmente 5 locales. Estos locales los coge de un tabla que se llama LOCALES.
Un saludo y gracias
Bueno amigo seria muy complejo convertir filas en columnas y al mismo tiempo totalizar de acuerdo a los locales, pero ya que no son muchos podemos hacer la siguiente modificación a la sentencia SQL:
SELECT proveedor, SUM(IIF(local='1',importe,0) AS TOTAL_L1, SUM(IIF(local='2',importe,0) AS TOTAL_L2,SUM(IIF(local='3',importe,0) AS TOTAL_L3,SUM(IIF(local='4',importe,0) AS TOTAL_L4, SUM(IIF(local='5',importe,0) AS TOTAL_L5 FROM nombre_de_tu_tabla WHERE fecha>[Forms]![Formulario1]![fechainicial] AND fecha <= [Forms]![Formulario1]![fechafinal] GROUP BY proveedor
Ten en cuenta que estoy asumiendo que tu campo LOCAL esta almacenando los códigos de locales de tipo CARÁCTER y que la nomenclatura es '1','2' ... '5', si no es así solo cambiale la nomenclatura que use y colócale la que corresponde.
çUn saludo. Gracias por tu ayuda.
Una cosa: la expresión que me mandaste me daba un error. Coloque detrás de cada "AS" un ")" que creo que faltaba. Haciendo esto me vuelve a dar un mensaje de error"la expresión no esta escrita correctamente o es muy compleja para evaluarse. Por ejemplo una expresión numérica puede contener muchos elementos complicados. Intente simplificar la expresión asignando avariables partes de las misma." A ver si me puedes ayudar.
Ahora, cambie tu expresion por esta "SELECT compras.proveedores, Sum(IIf(locales='1',importe,0)) AS TOTAL_L1, Sum(IIf(locales='2',importe,0)) AS TOTAL_L2, Sum(IIf(locales='3',importe,0)) AS TOTAL_L3, Sum(IIf(locales='4',importe,0)) AS TOTAL_L4, Sum(IIf(locales='5',importe,0)) AS TOTAL_L5, Sum(IIf(locales='6',importe,0)) AS TOTAL_L6
FROM compras
WHERE (((compras.fecha)>[Forms]![Formulario1]![fechainicial] And (compras.fecha)<=[Forms]![Formulario1]![fechafinal]))
GROUP BY compras.proveedores;"

Y me arroja este resultado:
Primero me pregunta "LOCALES", pongo un numero y y me da la suma en una columna (TOTAL L1 o TOTAL L2 o... o TOTAL L6), el resto es 0. Ademas ponga el numero que ponga siempre me arroja los mismos resultados, pero cambiando la columna.
Mi pregunta es la siguiente. Es posible una vez introducido el rango de fechas, ¿qué de diera el total del porveedor por un lado y el total de ese proveedor por local?, sin que me pida "LOCALES" Algo así:
Proveedor TOTAL Local1  Local2 .... Local6
Proveedor1 1000 500 500 0 0 0 0
Proveedor 2 3500 100 200 400 1000 300 1000 500
Un saludo y nuevamente muchas gracias
Enviame tu BD a mi correo [email protected] para ver en que esta fallando la consulta y te devuelvo la solución.
Cordial Saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas