Genios...muy buenas a todos.
Tengo que resolver lo siguiente.
Tabla 1: Contactos
id_contacto - int
nombre - varchar(100)
Tabla 2: Documentos
id_doc - int
id_cartera - smallint
fecha - smalldatetime
id_contacto - int
id_vendedor - int
Los Contactos son personas (clientes) que generan Documentos y se vinculan
por el id_contacto.
Los documentos siempre tienen una cartera (rubro), una fecha y un contacto.
Además pueden tener cero o 1 vendedor (sin vendedor se considera venta
directa, y se deja el campo id_vendedor en cero). Ese vendedor (de existir),
también es una persona de la tabla Contactos, y no tiene porque ser el mismo
para distintos documentos de un mismo contacto. (O sea que un cliente puede
tener varios documentos con distintos vendedores).
Para una cartera dada, necesito un reporte que tenga solo una fila por cada
contacto mostrando la fecha del último documento emitido, y si tiene
vendedor, cual fue el vendedor de ese último documento. No me debería
aparecer más de una fila por contacto.
Lo más cerca que llegué fue a:
select distinct contactos.nombre, max(documentos.fecha) as ultimo,
contactos1.nombre
from contactos
inner join documentos on contactos.id_contacto=documentos.id_asegurado
inner join contactos contactos1 on
contactos1.id_contacto=documentos.id_vendedor
where documentos.id_cartera=1
group by contactos.nombre,contactos1.nombre
order by contactos.nombre
Pero si hay un contacto que tuvo varios documentos vendidos por diferentes
vendedores, esto ya no funciona, pues muestra más de una fila por contacto.
Espero que hayan entendido el planteo.
Bueno, estoy en vuestras manos.
Mientras seguiré probando, quizás alguna subconsulta, pero no tengo aun
suficiente experiencia en esto.
Gracias desde ya,
y vayan mis respetos.
Marcelo
Leer las respuestas