PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Consulta SQL en HFSQL
Consulta SQL en HFSQL
Iniciado por Carlos Lizana, fev., 16 2021 4:04 PM - 1 resposta
Publicado em fevereiro, 16 2021 - 4:04 PM
Estimados, buenas tardes. Les planteo el siguiente caso que me tiene de cabeza. Tengo dos tablas en HFSQL/CS (simplifique el problema para explicarlo mejor). La Tabla INDIV con dos campos: la llave (identificacion del individuo) y la fecha de ingreso. La Tabla DATOS (con relaciòn 1 a n; INDIV - DATOS), con dos campos, la correspondiente id del individuo y la Fecha de un Evento. Cada individuo puede tener muchos eventos en distinta fecha (un evento por fecha).

Necesito que una consulta me devuelva parea cada individuo, la segunda fecha de evento. El diagrama muestra lo que he hecho.






Extraigo la fecha minima por individuo. Guardo esa fecha en un FIC asociandolo a un datasource temporal.

Luego en un segundo select leo ese datasource y le incluyo la fecha de evtno minima por individuo que sea mayor a la fecha minima. Creo entonces un segundo fic, lo asocio a otro datasource y este lo devuelvo.

Mi pregunta es: hay una mejor forma de hacer esto?
Membro registado
60 mensagems
Popularité : +2 (2 votes)
Publicado em fevereiro, 17 2021 - 6:04 PM
Hola Carlos, te paso otra opción, no se si es mejor a la tuya pero por lo menos es una alternativa:

sQuery1 is string
sQuery1 = [
SELECT
DA01.NumID,
INDIV.FechaIngr,
(SELECT TOP 1
DA02.FechaEv
FROM
DATOS as DA02
WHERE
DA01.NumID = DA02.NumID
AND
DA02.FechaEv > INDIV.FechaIngr
ORDER BY
DA02.FechaEv) AS FechaPrimerEvento,
MIN(DA01.FechaEv) as FechaSegundoEvento
FROM
DATOS AS DA01,INDIV
WHERE
DA01.NumID = INDIV.NumID
AND
DA01.FechaEv > FechaPrimerEvento
GROUP BY
DA01.NumID, INDIV.FechaIngr, FechaPrimerEvento
]

dsData is Data Source
HExecuteSQLQuery(dsData,hQueryDefault,sQuery1)
Trace("RESULTADO")
FOR EACH dsData
Trace(dsData.NumID + ", " + dsData.FechaPrimerEvento)
END

HToFile(dsData,"Resultado.fic")


Cualquier cosa me avisás si no llega a andar, espero que sea de utilidad.

Saludos,
friss.