Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta de totales sin repetición en Access

Estas en el tema de Consulta de totales sin repetición en Access en el foro de Bases de Datos General en Foros del Web. Hola, en una BBDD en Access tengo una tabla que almacena los días que los trabajadores han ido a trabajar. Si en un día vienen ...
  #1 (permalink)  
Antiguo 27/10/2011, 00:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Consulta de totales sin repetición en Access

Hola,
en una BBDD en Access tengo una tabla que almacena los días que los trabajadores han ido a trabajar. Si en un día vienen 2 veces se almacenan 2 registros distintos.

El problema viene cuando quiero calcular el total de días que ha venido cada trabajador pues quiero que cada día lo cuente una sola vez.

El código que tengo puesto es el siguiente, pero me cuenta los duplicados
(lo de los puestos es una condición a mayores que tengo que comprobar)

SELECT distinct Viene.ctrabajador, Trab.nombre, Count(Viene.dia) AS Cuenta
FROM Trab INNER JOIN Viene ON Trab.ctrabajador = Viene.ctrabajador
WHERE (((Viene.mes)=10) AND ((Viene.año)=2011) AND ((Viene.cpuesto)>="111" Or (Viene.cpuesto)="010"))
GROUP BY Viene.ctrabajador, Trab.nombre;

Espero haberme explicado con claridad. Gracias por la atención y la ayuda

Última edición por jololmedo; 27/10/2011 a las 03:07 Razón: Corregir nombre de las tablas
  #2 (permalink)  
Antiguo 27/10/2011, 07:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta de totales sin repetición en Access

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2.     (
  3.     dia datetime,
  4.     nombre VARCHAR(20)
  5.     )
  6.      
  7.     INSERT INTO #temp VALUES(
  8.      
  9.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','asilva')
  10.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','asilva')
  11.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','asilva')
  12.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','jguerrero')
  13.     INSERT INTO #temp VALUES('2011-10-26 00:00:00.000','jguerrero')
  14.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','jguerrero')
  15.     INSERT INTO #temp VALUES('2011-10-26 00:00:00.000','jguerrero')
  16.     INSERT INTO #temp VALUES('2011-10-26 00:00:00.000','privera')
  17.     INSERT INTO #temp VALUES('2011-10-26 00:00:00.000','privera')
  18.     INSERT INTO #temp VALUES('2011-10-26 00:00:00.000','privera')
  19.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','privera')
  20.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','privera')
  21.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','privera')
  22.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','privera')
  23.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','privera')
  24.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','privera')
  25.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','privera')
  26.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','psalcedo')
  27.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','psalcedo')
  28.     INSERT INTO #temp VALUES('2011-10-24 00:00:00.000','psalcedo')
  29.      
  30.     SELECT COUNT(nombre) AS dias,nombre FROM
  31.     (SELECT dia, nombre FROM #temp GROUP BY dia,nombre) t1 WHERE t1.dia BETWEEN '2011-10-01' AND '2011-10-30'
  32.     GROUP BY nombre

He ahi un ejemplo de como hacer lo que necesitas en sql server, revisalo y acomodalo para access

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 27/10/2011, 23:17
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Consulta de totales sin repetición en Access

Hola,
al ejecutar la consulta me da "Error de sintaxis en la cláusula FROM".
Detecto que esto me pasa cada vez que 'anido' una consulta de la manera "SELECT....FROM (SELECT ...."

Trabajo con Access 97. No se si tendrá algo que ver.
salud!

Edito para verificar que sí, es problema de la versión. He podido probar con Access 2003 y ejecuta la consulta perfectamente.
¿Para access 97 no hay alternativa? (sigh!)

Vuelvo a editar. Solucionado.
en access 97 después del from hay que poner ¡corchete! en lugar de paréntesis y así ya funciona.

Última edición por jololmedo; 28/10/2011 a las 00:04 Razón: Ampliar información

Etiquetas: access, duplicados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:42.