Foros del Web » Bases de Datos » SQL Server »

Ultimo movimiento de un cliente en SQL 2005

Estas en el tema de Ultimo movimiento de un cliente en SQL 2005 en el foro de SQL Server en Foros del Web. Hola, quiero ser lo mas claro posible, tengo una tabla clientes y una tabla ventas con la siguiente estructura clientes [ idcliente, nombre] ventas [ ...
  #1 (permalink)  
Antiguo 16/03/2010, 13:11
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 5 años, 9 meses
Puntos: 0
Ultimo movimiento de un cliente en SQL 2005

Hola, quiero ser lo mas claro posible, tengo una tabla clientes y una tabla ventas con la siguiente estructura

clientes [ idcliente, nombre]

ventas [ idventa, idcliente, detalle]

lo que intento hacer basicamente es obtener la ultima venta de cada cliente y mostrar los datos del cliente, doy un ejemplo de las tablas y al final el resultado que deseo obtener al cual me es imposible llegar

clientes
idcliente nombre
1 Martin
2 Lucas
3 Rodrigo

ventas
idventa idcliente detalle
1 1 1 pepino
2 1 2 manzanas
3 3 5 mandarinas
4 2 3 peras
5 2 6 naranjas
6 1 8 kiwis
7 3 2 bananas


lo que quiero que me devuelva es el ultimo movimiento de cada cliente

idventa idcliente nombre detalle
5 2 Lucas 6 naranjas
6 1 Martin 8 kiwis
7 3 Rodrigo 2 bananas

el problema es que cuando hago un inner join de ambas tablas me devuelve todos los movimientos. yo quiero solo el ultimo de cada uno, y si hay clientes que no tienen movimientos que no me los muestre

desde ya muchas gracias!!!!
  #2 (permalink)  
Antiguo 16/03/2010, 13:55
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.122
Antigüedad: 7 años, 3 meses
Puntos: 161
Respuesta: Ultimo movimiento de un cliente en SQL 2005

A las "ventas" debes aplicarle un MAX(idventa), para que te de la ULTIMA VENTA agrupado por idcliente
  #3 (permalink)  
Antiguo 18/03/2010, 20:53
 
Fecha de Ingreso: enero-2010
Ubicación: SJM Lima - Peru
Mensajes: 55
Antigüedad: 4 años, 9 meses
Puntos: 1
Respuesta: Ultimo movimiento de un cliente en SQL 2005

Cita:
Iniciado por LucasArt Ver Mensaje
Hola, quiero ser lo mas claro posible, tengo una tabla clientes y una tabla ventas con la siguiente estructura

clientes [ idcliente, nombre]

ventas [ idventa, idcliente, detalle]

lo que intento hacer basicamente es obtener la ultima venta de cada cliente y mostrar los datos del cliente, doy un ejemplo de las tablas y al final el resultado que deseo obtener al cual me es imposible llegar

clientes
idcliente nombre
1 Martin
2 Lucas
3 Rodrigo

ventas
idventa idcliente detalle
1 1 1 pepino
2 1 2 manzanas
3 3 5 mandarinas
4 2 3 peras
5 2 6 naranjas
6 1 8 kiwis
7 3 2 bananas


lo que quiero que me devuelva es el ultimo movimiento de cada cliente

idventa idcliente nombre detalle
5 2 Lucas 6 naranjas
6 1 Martin 8 kiwis
7 3 Rodrigo 2 bananas

el problema es que cuando hago un inner join de ambas tablas me devuelve todos los movimientos. yo quiero solo el ultimo de cada uno, y si hay clientes que no tienen movimientos que no me los muestre

desde ya muchas gracias!!!!
HoLa Lucas

primero saque un subconsulta de ventas ordenandolo por idventa en forma descendente pero solo obtengo un resultado ya que utilizo el TOP 1 con alias SV en donde lo relaciono con C.idcliente ya q con esto por cada cliente sale su ultima venta IDVENTA y despues busco el IDVENTA en mi inner join de 2 tablas clientes y ventas y asi me devuelve unicamente la ultima venta por cada cliente.

Código SQL:
Ver original
  1. SELECT V.idventa ,C.idcliente ,C.nombre ,V.detalle
  2.  FROM clientes C INNER JOIN ventas V ON C.idcliente=V.idcliente
  3.     WHERE
  4.  
  5.    V.idventa IN  (SELECT top 1 SV.idventa FROM ventas SV
  6.                 WHERE SV.idcliente=C.idcliente ORDER BY SV.idventa DESC)
  7.  
  8.     ORDER BY V.idventa

Observar bien cuales son las tablas(2 clientes, ventas) y cuantos alias hay en toda la consulta(3 C, V, SV) SV- le puse por ser subVenta.


www.bitxense.com.pe | Soluciones Informaticas S.A.C. - [email protected]
Cualquier duda soy Jhon Bautista Palomino aqui esta mi correo [email protected] Lima-Peru

Etiquetas: cliente, movimiento, sql, ultimo
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:06.
SEO by vBSEO 3.3.2