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

[SOLUCIONADO] Obtener clientes sin compra en 6 meses

Estas en el tema de Obtener clientes sin compra en 6 meses en el foro de SQL Server en Foros del Web. Buenos días, estoy atorado con una consulta para obtener los clientes que no han comprado en los últimos seis meses. PD: Soy un novato en ...
  #1 (permalink)  
Antiguo 23/01/2014, 11:03
Avatar de camvs  
Fecha de Ingreso: enero-2014
Ubicación: Distrito Federal
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
Obtener clientes sin compra en 6 meses

Buenos días, estoy atorado con una consulta para obtener los clientes que no han comprado en los últimos seis meses.

PD: Soy un novato en SQL y autodidacta que quiere resolver este tipo consultas...!!

Los nombres de mis tablas son:
  • fte_clientes
  • fte_ ventas


Y el query que intento construir es así pero no me dá el resultado correcto, me sigue mostrando clientes que compraron dentro de los últimos 6 meses y no aquellos que NO HAN COMPRADO durante los últimos 6 meses.

SELECT
vt.id_Cliente,
vt.nombre,
vt.aPaterno,
vt.aMaterno,
vt.diaCumpleanos,
vt.mesCumpleanos,
vt.email,
vt.serverEmail,
vt.telCasa,
vt.telCelular,
vt.telOficina,
vt.ext,
vt.autorizacion
from fte_clientes vt
LEFT OUTER JOIN

(
SELECT
distinct
id_cliente
from fte_ventas vt
where vt.id_marca = 3
and fecha_venta >= (select DATEADD ( month ,-6,MAX(fecha_Venta)) from fte_ventas WHERE id_marca = 3 and id_tienda = 24001)
and vt.id_tienda = 24001
) cp
ON vt.id_cliente = cp.id_cliente
where vt.id_tienda = 24001
and vt.id_marca = 3
and cp.id_cliente is null
  #2 (permalink)  
Antiguo 23/01/2014, 11:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Obtener clientes sin compra en 6 meses

Si es que el master Libras no ofrece algo mas, aquí mi granito de chavo de 15 años

Código SQL:
Ver original
  1. SELECT * FROM fte_clientes cte
  2. WHERE NOT EXISTS (SELECT * FROM fte_ ventas vtas cte.idcliente = vtas.idcliente)
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 23/01/2014, 11:47
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: Obtener clientes sin compra en 6 meses

podrias poner un ejemplo de tus datos??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 23/01/2014, 11:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Obtener clientes sin compra en 6 meses

¿Y donde quedo el don de la ADIVINANZA?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 23/01/2014, 11:53
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: Obtener clientes sin compra en 6 meses

Cita:
Iniciado por iislas Ver Mensaje
¿Y donde quedo el don de la ADIVINANZA?
Hoy no me acompaño jejejeje ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 23/01/2014, 12:50
Avatar de camvs  
Fecha de Ingreso: enero-2014
Ubicación: Distrito Federal
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Obtener clientes sin compra en 6 meses

Saludos a todos, ya pude corregir el problema y se debía a que consultaba en dos tiendas distintas las ventas registradas, cambié los parámetros a que la consulta se realice en una sola tienda y listo, los resultados obtenidos son únicamente de la tienda 16006 de clientes que no han comprado en los últimos 6 meses.
Saludos a todos y gracias por sus comentarios

El query final queda así:

SELECT
vt.id_Cliente,
vt.nombre,
vt.aPaterno,
vt.aMaterno,
vt.diaCumpleanos,
vt.mesCumpleanos,
vt.email,
vt.serverEmail,
vt.telCasa,
vt.telCelular,
vt.telOficina,
vt.ext,
vt.autorizacion
from fte_clientes vt
LEFT OUTER JOIN

(
SELECT
distinct
id_cliente
from fte_ventas vt
where vt.id_marca = 3
and fecha_venta >= (select DATEADD ( month ,-6,MAX(fecha_Venta)) from fte_ventas WHERE id_marca = 3 and id_tienda = 16001)
and vt.id_tienda = 16001
) cp
ON vt.id_cliente = cp.id_cliente
where vt.id_tienda = 16001
and vt.id_marca = 1
and cp.id_cliente is null

Etiquetas: compra, fecha, meses, select, server, sql, tabla
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:07.