SQL - Consulta SQL Server 2000

   
Vista:

Consulta SQL Server 2000

Publicado por F. (4 intervenciones) el 21/04/2016 22:53:41
Existen dos tablas: Beneficiario y Complementario.
Debo obtener todos los beneficiarios que esten vigentes y no vigentes. Pero si un beneficiario se encuentra dos veces, debo considerar el Vigente.
El campo de beneficiario con lo que hago el join es: ben_rut
el campo de complementario con el que hago el join es : com_rutpaciente
Ayuda pls .
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Consulta SQL Server 2000

Publicado por Isaias (690 intervenciones) el 22/04/2016 00:50:33
Veamos, quiero entender que quieres que hagamos la chamba, o dime, ¿Que avance llevas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta SQL Server 2000

Publicado por F. (4 intervenciones) el 22/04/2016 14:33:09
Hola, gracias por responder y perdón por la mala explicación del problema que ayer la hice un poco rápido. En fin ahora una explicación mejor del problema.
Tengo que crear un módulo para un sistema en donde necesito sacar un reporte con los datos de los gastos que hacen distintos beneficiarios en un periodo determinado. Todos los gastos se sacan de una tabla llamada "Complementario" , pero necesito también sacar si el beneficiario que hizo el gasto se encuentra vigente o no. Para saber si un beneficiario está vigente o no tiene un campo llamado "Ben_vigente".
En la tabla Complementario existe un campo que se llama com_rutpaciente que es con el que se hace el join con ben_rut en la tabla Beneficiario.
El problema existió cuando me fije que un beneficiario puede estar registrado mas de una vez (Ya sea porque antes fue carga de un beneficiario titular y ahora es titular, o fue carga de un titular y luego de otro titular. etc). Para omitir de los que se repiten debo considerar el último que fue creado, el campo con el que se obtiene esa información es llamado "ben_fecha_modificado " Bueno a continuación las tablas y algunos de los campos de ellas.
Tabla Beneficiario:
BEN_ID_BENEFICIARIO, PAR_ID_PARENTESCO_MEL ,SIN_ID_SINDICATO, BEN_ID_COTIZANTE,PLN_NRO_PLAN, BEN_RUT, BEN_VIGENTE, BEN_NOMBRES, BEN_APELLIDO_PATERNO, BEN_APELLIDO_MATERNO, BEN_SEXO, BEN_ESTADO_CIVIL ...
Tabla Complementario:
CIS_AMBIENTE, CIS_TIPOATENCION, CIS_CODSUBGRUPO, CIS_PERCONTAB, CIS_PERDEVOLU, CIS_MENORCOSTO, CIS_RUTTITULAR, CIS_RUTTITULAR, CIS_DVTITULAR, CIS_RUTPACIENTE, CIS_RUTPACIENTE, CIS_RUTPACIENTE, CIS_RUTPACIENTE...

Ahora parte del procedimiento almacenado que tengo para obtener los datos:
CREATE procedure Mel_Sp_ObtenerComplementarioIsapre(
@periodoIni varchar (6),
@periodoFin varchar (6)
)

as

SELECT COMPLEMENTARIO.CIS_AMBIENTE, COMPLEMENTARIO, COMPLEMENTARIO.CIS_PERDEVOLU, COMPLEMENTARIO.CIS_RUTTITULAR,
COMPLEMENTARIO.CIS_RUTPACIENTE,
b.BEN_NOMBRES + ' ' + b.BEN_APELLIDO_PATERNO + ' ' + b.BEN_APELLIDO_MATERNO AS NOMBRE_PACIENTE_COMPLETO, COMPLEMENTARIO_ISAPRE.CIS_VALORUNITARIO,
b.ben_Vigente
FROM COMPLEMENTARIO INNER JOIN
BENEFICIARIO b ON COMPLEMENTARIO.CIS_RUTPACIENTE = b.BEN_RUT
WHERE cast (CIS_PERCONTAB as varchar) between @periodoIni AND @periodoFin
GO

Bueno solo quiero saber como dejar de los beneficiarios que están mas de una vez el que tenga fecha de modificación mayor, ya que por ejemplo con la consulta anterior, el mismo beneficiario me aparece como vigente y no vigente.
Espero haber explicado mejor,
Gracias...
F.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Consulta SQL Server 2000

Publicado por Isaias (690 intervenciones) el 22/04/2016 20:10:47
Podrias utilizar la funcion MAX() para ben_fecha_modificado, agrupado por beneficiario y obtener solamente los BENEFICIARIOS UNICOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta SQL Server 2000

Publicado por F, (4 intervenciones) el 25/04/2016 14:47:55
Gracias por la pronta respuesta. Entiendo la lógica de tu respuesta, pero intento de implementarla y no se como agregarla al procedimiento almacenado, me podrías decir donde iría la función max() en el SP?. Muchas Gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta SQL Server 2000

Publicado por F. (4 intervenciones) el 25/04/2016 20:33:52
Lo logré ! Muchas gracias por la ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar