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

Consulta difícil: obtener la diferencia de filas

Estas en el tema de Consulta difícil: obtener la diferencia de filas en el foro de Oracle en Foros del Web. Se me ha ocurrido esta consulta difícil, a ver si alguien sabe cómo se haría. Imaginad una tabla en la que hay un campo fecha. ...
  #1 (permalink)  
Antiguo 05/07/2009, 17:04
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 16 años, 4 meses
Puntos: 6
Consulta difícil: obtener la diferencia de filas

Se me ha ocurrido esta consulta difícil, a ver si alguien sabe cómo se haría.

Imaginad una tabla en la que hay un campo fecha. Puede simbolizar, las compras que un cliente (que estaría identificado mediante un identificador) ha realizado, y el día de la compra, o cualquier otra cosa.

a) Suponiendo que sólo hubiera dos registros por cliente en esa tabla, ¿cómo se realizaría una consulta que dijera, para cada cliente, el número de días transcurridos entre una compra y otra (entre las dos fechas)?
b) Suponiendo que hubiera n registros para cada cliente, ¿cómo se obtendrían las n diferencias?
  #2 (permalink)  
Antiguo 06/07/2009, 11:52
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 12 años, 4 meses
Puntos: 360
Respuesta: Consulta difícil: obtener la diferencia de filas

Que tal un_tio.

creo que te puedes valer de una pseudocolumn llamada rownum. Para este ejemplo, tengo una tabla venta con los campos id_venta,id_cliente y fecha.

Código sql:
Ver original
  1. SELECT v1.cod,v1.fecha,v2.fecha,(v2.fecha-v1.fecha)resta
  2. FROM (SELECT rownum AS cod,fecha FROM VENTA) v1
  3. INNER JOIN
  4. (SELECT rownum AS cod,fecha FROM VENTA) v2 ON v1.cod = (v2.cod - 1)

Ten en cuenta que no sirve con el cod_venta, ya que no se sabe el orden y posición del registro para interactuar con el. De esta forma, si tienes mas ventas y mas clientes, debes establecer las condiciones dentro de las tablas v1 y v2.

Un saludo y espero te sirva.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 06/07/2009 a las 13:49
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 16:08.