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

[SOLUCIONADO] Crear un acumulado condicional en access

Estas en el tema de Crear un acumulado condicional en access en el foro de Bases de Datos General en Foros del Web. Hola Soy nueva en el foro y tengo una consulta Quiero hacer un conteo acumulado de compras que se realizan con bonos de regalo, para ...
  #1 (permalink)  
Antiguo 19/09/2013, 10:36
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta Crear un acumulado condicional en access

Hola

Soy nueva en el foro y tengo una consulta

Quiero hacer un conteo acumulado de compras que se realizan con bonos de regalo, para cada cuenta tengo una cantidad de bonos y la fecha en que se utilizaron. Lo que quiero hacer es que me cuente cuántos bonos de cada cliente fueron utilizados en menos de 24 horas. Lo realicé en Excel pero no tengo la menor idea sobre cómo realizarlo en Access. Esta es mi base de datos y los resultados que tengo en Excel:

Cliente Talonario Fecha_uso Bonos_usados Acumulado
16301 8978 02/11/2012 19:57 1 1
16301 8978 26/11/2012 13:54 1 1
16301 8978 26/11/2012 14:25 1 2
16301 8978 26/11/2012 16:22 1 3
16301 8978 05/01/2013 14:07 1 1
33003 4828 01/11/2012 09:58 1 1
33003 4828 01/11/2012 16:42 1 2
33003 4828 01/11/2012 20:29 1 3
33003 4828 01/11/2012 20:56 1 4
33003 4828 01/11/2012 20:58 1 5
33003 4828 02/11/2012 09:00 1 6
33003 4828 03/11/2012 10:47 1 1
33003 4828 03/11/2012 13:10 1 2

Lo he agrupado de mil maneras en Access pero no logro que me den los mismos datos del Excel para el acumulado. Para el cuarto registro, por ejemplo, tomo la fecha de uso y le resto 24h y cuento cuántos bonos se utilizaron en esas 24h (me da como resultado 3). Luego tomo la fecha siguiente, le resto 24h y cuento de nuevo, si no hay compras pues reinicia el acumulado.
Espero que me hayan entendido, muchas gracias por su ayuda.
  #2 (permalink)  
Antiguo 19/09/2013, 11:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Crear un acumulado condicional en access

En access no se como se podria hacer en sql server seria haciendo un join con la misma tabla :P jejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/09/2013, 11:21
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Crear un acumulado condicional en access

Hola

Cómo sería el join que me indicas en sql?
  #4 (permalink)  
Antiguo 19/09/2013, 11:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Crear un acumulado condicional en access

asi:

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. id INT,
  3. fecha datetime,
  4. uso INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES (16301,  '11/02/2012 19:57', 1 )
  8. INSERT INTO #temp VALUES (16301,  '11/26/2012 13:54', 1 )
  9. INSERT INTO #temp VALUES (16301,  '11/26/2012 14:25', 3 )
  10. INSERT INTO #temp VALUES (16301,  '11/26/2012 16:22', 4)
  11. DELETE FROM #temp
  12.  
  13. SELECT t1.id,t1.fecha,SUM(t2.uso) FROM(
  14. SELECT id,fecha,ROW_NUMBER() OVER(partition BY id,CONVERT(VARCHAR(20),fecha,101) ORDER BY id) rn,uso FROM #temp
  15. ) t1
  16. LEFT JOIN (
  17. SELECT id,fecha,ROW_NUMBER() OVER(partition BY id,CONVERT(VARCHAR(20),fecha,101) ORDER BY id) rn,uso FROM #temp
  18. ) t2 ON (CONVERT(VARCHAR(20),t1.fecha,101)=CONVERT(VARCHAR(20),t2.fecha,101))
  19. WHERE (t2.rn<=t1.rn)   GROUP BY t1.id,t1.fecha

Aclaro uso sql server 2008-2012
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 19/09/2013, 12:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Crear un acumulado condicional en access

oye el ejemplo que pones de acumulado tiene errores:

33003 4828 01/11/2012 09:58 1 1
33003 4828 01/11/2012 16:42 1 2
33003 4828 01/11/2012 20:29 1 3
33003 4828 01/11/2012 20:56 1 4
33003 4828 01/11/2012 20:58 1 5
33003 4828 02/11/2012 09:00 1 6 Aqui deberia de ser 1 porque cambio de dia no??
33003 4828 03/11/2012 10:47 1 1
33003 4828 03/11/2012 13:10 1 2
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 19/09/2013, 12:26
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 5
Respuesta: Crear un acumulado condicional en access

libras, supongo para tu ejemplo se puede usar algo como esto.....(digo no)....
Código SQL:
Ver original
  1. SELECT * FROM(
  2. SELECT *,ROW_NUMBER() OVER(Partition BY DAY(fecha),id ORDER BY id) Acumulado
  3. FROM #temp) AS t1

saludos....
__________________
Lo que no se....tampoco creo saberlo....
  #7 (permalink)  
Antiguo 19/09/2013, 12:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Crear un acumulado condicional en access

NO para nada :) el acumulado lo que hace es sumar los usos no solamente mostrar el renglon....

Ejecutando tu query:

id fecha uso Acumulado
----------- ----------------------- ----------- --------------------
16301 2012-11-02 19:57:00.000 1 1
16301 2012-11-26 13:54:00.000 1 1
16301 2012-11-26 14:25:00.000 3 2
16301 2012-11-26 16:22:00.000 4 3


Ejecutando mi query

id fecha acumulado
----------- ----------------------- -----------
16301 2012-11-02 19:57:00.000 1
16301 2012-11-26 13:54:00.000 1
16301 2012-11-26 14:25:00.000 4
16301 2012-11-26 16:22:00.000 8

saludos!

Funcionaria usando row_number si y solo si siempre los usos fueran de 1 en 1.....en ese caso con row_number se soluciona el problema :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 19/09/2013, 13:21
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Crear un acumulado condicional en access

Hola Libras :)

Nop, mi acumulado no tiene errores porque no tiene en cuenta el cambio de día sino la cantidad de horas que han transcurrido, por ej entre 02/11/2012 09:00 y 01/11/2012 09:58 han pasado 23:02 horas, por eso acumula esa operación también.

Voy a probar con tu código y si tengo otra duda te cuento.

Muchas gracias
  #9 (permalink)  
Antiguo 19/09/2013, 13:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Crear un acumulado condicional en access

sip ya vi que tienes la condicion de las 24 horas.....:)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 19/09/2013, 14:08
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Crear un acumulado condicional en access

Funcionaaa

Muchas gracias Libras, ya "traduje" tu sql como consulta de Access y funciona, aunque para el primer registro me cuenta "0"
Pero de resto todo está perfecto!!! Gracias!!!
  #11 (permalink)  
Antiguo 19/09/2013, 14:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Crear un acumulado condicional en access

que bien que te funciono :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: access
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 11:19.