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

Ayuda FECHAS

Estas en el tema de Ayuda FECHAS en el foro de SQL Server en Foros del Web. Tengo una tabla con citas de clientes con un campo del tipo date, donde se van guardando todas las citas de mis clientes, pueden ser ...
  #1 (permalink)  
Antiguo 26/08/2009, 08:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 15 años, 8 meses
Puntos: 2
Ayuda FECHAS

Tengo una tabla con citas de clientes
con un campo del tipo date, donde se van guardando todas las citas de mis clientes, pueden ser mas de 10 o 15 en un mes, pero solo quisiera la ultima
¿la verdad no encuentro por donde?

gracias de antemano
  #2 (permalink)  
Antiguo 26/08/2009, 09:03
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Ayuda FECHAS

Código:
SELECT MAX(FECHA_CITA)  FECHA_CITA
FROM   TBL_CITAS
WHERE CLIENTE_ID = @CLIENTE_ID  AND
          FECHA_CITA >= @Fecha_Inicial AND
          FECHA_CITA <= @Fecha_Final
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 26/08/2009, 10:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Ayuda FECHAS

Gracias, pero la situación es la siguiente:
tengo dos tablas, una con toda la información del cliente
Id, Nombre, direccion, Teléfono, etc
y otra con toda la información de las citas
Id, IdCliente, FechaCita, Comentarios, etc.
de estas tablas saco un reporte en crystal, que obtiene los datos de una vista.
Un cliente puede tener n citas y por consiguiente el campo de FechaCita puede contener n fechas, lo unico que quiero es que en la vista obtener la ultima fecha de citas del cliente, sin manejar parametros, porque es un reporte global, tengo cerca de 1600 clientes.
Y el reporte me tiene que arrojar los 1600 clientes con sus ultimas citas.

gracias por la ayuda.
  #4 (permalink)  
Antiguo 26/08/2009, 10:05
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Ayuda FECHAS

Código:
SELECT  CLIENTES.*, MC.FECHA_CITA
FROM  CLIENTES CL
LEFT OUTER JOIN
(
SELECT Cliente_Id, MAX(FECHA_CITA)  FECHA_CITA
FROM   TBL_CITAS
) MC
ON   CL.Cliente_Id = MS.Cliente_Id
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 26/08/2009, 11:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Ayuda FECHAS

Select Clientes.*, Mc.Fecha
From Clientes Cl
Left Outer Join
(
Select IdCliente, Max(Mc.Cita) Fecha_Cita
From Cita Mc
)
On
Cl.Id=Mc.IdCliente

¿Es así, mas o menos?
Gracias
  #6 (permalink)  
Antiguo 26/08/2009, 11:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Ayuda FECHAS

me manda el siguiente error:

Mens. 8120, Nivel 16, Estado 1, Línea 1
La columna 'citas.Id' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.
  #7 (permalink)  
Antiguo 26/08/2009, 11:17
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda FECHAS

Si utilizas MAX(), debes hacer un GROPU BY por idCliente


Select IdCliente, Max(Mc.Cita) Fecha_Cita
From Cita Mc
  #8 (permalink)  
Antiguo 26/08/2009, 12:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Ayuda FECHAS

Asi es, funciona perfectamente, cuando manejo solo tres campos
Id, Nombre y Fecha, pero cuando le agrego el campo de comentarios
me devuelve todas las fechas con todos los comentarios realizados en cada fecha...

Gracias
  #9 (permalink)  
Antiguo 26/08/2009, 12:32
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Ayuda FECHAS

Cita:
Iniciado por iislas Ver Mensaje
Si utilizas MAX(), debes hacer un GROPU BY por idCliente


Select IdCliente, Max(Mc.Cita) Fecha_Cita
From Cita Mc

es cierto, olvide agregar el group by clienteid

Alfredo, nos podrias mostrar como quedo el query que te muestra el resultado no esperado?

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #10 (permalink)  
Antiguo 26/08/2009, 12:50
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Ayuda FECHAS

Select Ci.IdClientes, Co.Nombre, Max(Ci.Fecha) Ult_Fecha
From Citas Ci
Inner Join Clientes Co
On Ci.IdContacto=Co.Id
Where Co.Baja='False' "SOLO UTILIZO LOS CLIENTES ACTIVOS"
Group By Ci.IdContacto, Co.Nombre
***Esta consulta funciona correctamente****

Pero como quiero saber cual fueron los comentarios de la ultima cita, agrego el campo "Comentarios"

Select Ci.IdClientes, Co.Nombre, Max(Ci.Fecha) Ult_Fecha, Ci.Comentarios
From Citas Ci
Inner Join Clientes Co
On Ci.IdContacto=Co.Id
Where Co.Baja='False' "SOLO UTILIZO LOS CLIENTES ACTIVOS"
Group By Ci.IdContacto, Co.Nombre, Ci.Comentarios
Order By Co.Nombre

***Y el resultado es que me envia todas las fechas y los comentarios a dicha fechas****

pienso que es logico porque, los comentarios siempre son diferentes...
  #11 (permalink)  
Antiguo 26/08/2009, 14:05
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Ayuda FECHAS

okay, si se puede tomar el cliente + la fecha como llave, quedaria algo como:

Código:
SELECT   CI.[Id]
        ,CO.Nombre
        ,S.Fecha
        ,CI.Comentarios
FROM    (   SELECT      CI.IdClientes 
                       ,MAX(CI.Fecha) Fecha
            FROM        Clientes CO 
            INNER JOIN  Citas CI 
            ON          CI.IdContacto = Co.[Id]  AND
                        CO.Baja       = 'False'  
            GROUP BY    CI.IdClientes
        ) S
INNER JOIN 
        Citas CI
ON      S.IdClientes = CI.IdClientes AND
        S.Fecha      = CI.Fecha
INNER JOIN 
        Clientes CO
ON      CI.IdClientes = Co.[Id]
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #12 (permalink)  
Antiguo 26/08/2009, 16:38
 
Fecha de Ingreso: agosto-2008
Mensajes: 142
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Ayuda FECHAS

Andres, perfecto!!!

Muchas gracias.

eres un iluminado
  #13 (permalink)  
Antiguo 27/08/2009, 20:46
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda FECHAS

Eso me sono como "guia esperitual", si, Andres95 es un iluminado de los dioses del SQL

Saludos
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 09:01.