Consulta de Rangos

01/03/2005 - 18:21 por Lucho | Informe spam
Hola amigos:

Tengo la siguiente consulta, que me arroja un conjunto de
registros de llamadas durante el mes de Enero:

SELECT eBD.CLIENTES.IdentificacionCliente as 'NIT',
eBD.CLIENTES.NombreCliente AS 'CLIENTE',
eBD.LLAMADAS.CodigoLlamada AS 'CODIGO DE LLAMADA',
eBD.LLAMADAS.FechaHoraLlamada
AS 'FECHA Y HORA DE LA LLAMADA',
eBD.PRODUCTOS.NombreProducto AS 'PRODUCTO',
eBD.LLAMADAS.DetalleLlamada AS 'MOTIVO DE LA LLAMADA'
FROM eBD.CLIENTES INNER JOIN
eBD.LLAMADAS ON
eBD.CLIENTES.IdentificacionCliente =
eBD.LLAMADAS.IdentificacionCliente INNER JOIN
eBD.PRODUCTOSLLAMADAS ON
eBD.LLAMADAS.CodigoLlamada =
eBD.PRODUCTOSLLAMADAS.CodigoLlamada INNER JOIN
eBD.PRODUCTOS ON
eBD.PRODUCTOSLLAMADAS.CodigoProductoLlamada =
eBD.PRODUCTOS.CodigoProducto
WHERE (eBD.LLAMADAS.FechaHoraLlamada >= '20050101')
AND (eBD.LLAMADAS.FechaHoraLlamada <= '20050131')
ORDER BY eBD.clientes.identificacioncliente

Las columnas que me devulve la consulta son :

NIT
CLIENTE
CODIGO DE LLAMADA
FECHA Y LA HORA DE LA LLAMADA
PRODUCTO
DESCRIPCION DE LA LLAMADA

Esta sentencia esta bien y me esta devolviendo los datos
que necesito... pero necesito que me traiga solamente los
clientes que llamaron mas de dos veces durante este rango
de fechas.

Agradezco su amable colaboracion

Lucho
 

Leer las respuestas

#1 Alejandro Mesa
01/03/2005 - 18:47 | Informe spam
Lucho,

Trata con la siguiente sentencia:

SELECT
eBD.CLIENTES.IdentificacionCliente as 'NIT',
eBD.CLIENTES.NombreCliente AS 'CLIENTE',
eBD.LLAMADAS.CodigoLlamada AS 'CODIGO DE LLAMADA',
eBD.LLAMADAS.FechaHoraLlamada AS 'FECHA Y HORA DE LA LLAMADA',
eBD.PRODUCTOS.NombreProducto AS 'PRODUCTO',
eBD.LLAMADAS.DetalleLlamada AS 'MOTIVO DE LA LLAMADA'
FROM
eBD.CLIENTES
INNER JOIN
eBD.LLAMADAS
ON eBD.CLIENTES.IdentificacionCliente = eBD.LLAMADAS.IdentificacionCliente
INNER JOIN
eBD.PRODUCTOSLLAMADAS
ON eBD.LLAMADAS.CodigoLlamada = eBD.PRODUCTOSLLAMADAS.CodigoLlamada
INNER JOIN
eBD.PRODUCTOS
ON eBD.PRODUCTOSLLAMADAS.CodigoProductoLlamada = eBD.PRODUCTOS.CodigoProducto
WHERE
(eBD.LLAMADAS.FechaHoraLlamada >= '20050101')
AND (eBD.LLAMADAS.FechaHoraLlamada <= '20050131')
and exists(
select
1
from
eBD.LLAMADAS as l
where
l.IdentificacionCliente = eBD.LLAMADAS.IdentificacionCliente
and l.FechaHoraLlamada >= '20050101'
and l..FechaHoraLlamada <= '20050131'
group by
l.IdentificacionCliente
having
count(*) > 2
)
ORDER BY
eBD.clientes.identificacioncliente
go

Puede que esta no sea la solucion mas adecuada, pero por falta de
informacion sobre las tablas involucradas en el query (definicion,
constraints, etc.) esto es lo mejor que puedo hacer.

En estos casos siempre es bienvenido el que se adjunte las sentencias de
definicion de datos (DDL), valores de ejemplo y el resultado esperado.


AMB

"Lucho" wrote:

Hola amigos:

Tengo la siguiente consulta, que me arroja un conjunto de
registros de llamadas durante el mes de Enero:

SELECT eBD.CLIENTES.IdentificacionCliente as 'NIT',
eBD.CLIENTES.NombreCliente AS 'CLIENTE',
eBD.LLAMADAS.CodigoLlamada AS 'CODIGO DE LLAMADA',
eBD.LLAMADAS.FechaHoraLlamada
AS 'FECHA Y HORA DE LA LLAMADA',
eBD.PRODUCTOS.NombreProducto AS 'PRODUCTO',
eBD.LLAMADAS.DetalleLlamada AS 'MOTIVO DE LA LLAMADA'
FROM eBD.CLIENTES INNER JOIN
eBD.LLAMADAS ON
eBD.CLIENTES.IdentificacionCliente =
eBD.LLAMADAS.IdentificacionCliente INNER JOIN
eBD.PRODUCTOSLLAMADAS ON
eBD.LLAMADAS.CodigoLlamada =
eBD.PRODUCTOSLLAMADAS.CodigoLlamada INNER JOIN
eBD.PRODUCTOS ON
eBD.PRODUCTOSLLAMADAS.CodigoProductoLlamada =
eBD.PRODUCTOS.CodigoProducto
WHERE (eBD.LLAMADAS.FechaHoraLlamada >= '20050101')
AND (eBD.LLAMADAS.FechaHoraLlamada <= '20050131')
ORDER BY eBD.clientes.identificacioncliente

Las columnas que me devulve la consulta son :

NIT
CLIENTE
CODIGO DE LLAMADA
FECHA Y LA HORA DE LA LLAMADA
PRODUCTO
DESCRIPCION DE LA LLAMADA

Esta sentencia esta bien y me esta devolviendo los datos
que necesito... pero necesito que me traiga solamente los
clientes que llamaron mas de dos veces durante este rango
de fechas.

Agradezco su amable colaboracion

Lucho

Preguntas similares