我有查询,我将其重命名为“Resultados”,此查询的输出为:
然后我有一个查询,它返回“Resultados”中连续日期的开始和结束日期,分别按字段GEN_idMedicamento_Arsenal,GEN_idPaciente和GroupID
分组SELECT GEN_idMedicamento_Arsenal,
GEN_idPaciente,
GroupID,
Inicio = MIN(HOS_fecha_recetaReceta_Indicaciones),
Fin = MAX(HOS_fecha_recetaReceta_Indicaciones),
Dias= DATEDIFF(DAY, MIN(HOS_fecha_recetaReceta_Indicaciones), MAX(HOS_fecha_recetaReceta_Indicaciones)) + 1
FROM Resultados
GROUP BY GEN_idMedicamento_Arsenal, GEN_idPaciente, GroupID
查询的输出是:
此输出是正确的,但我需要其他字段,我不能放在group by子句中,例如,我需要MAX(日期)行的字段GEN_nombreCama,HOS_diagnostico_principalReceta_Indicaciones,我将其重命名为“Fin”,在这种情况下,预期的输出是:
答案 0 :(得分:0)
SELECT DISTINCT GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
,Inicio = MIN(HOS_fecha_recetaReceta_Indicaciones) OVER (
ORDER BY GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
)
,Fin = MAX(HOS_fecha_recetaReceta_Indicaciones) OVER (
ORDER BY GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
)
,Dias = DATEDIFF(DAY, MIN(HOS_fecha_recetaReceta_Indicaciones) OVER (
ORDER BY GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
), MAX(HOS_fecha_recetaReceta_Indicaciones) OVER (
ORDER BY GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
)) + 1
,,GEN_nombercama
,HOS_diagnostico_principalReceta_Indicaciones
FROM Resultados
答案 1 :(得分:0)
SELECT GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
,Inicio
,Fin
,Dias = DATEDIFF(DAY, Inicio, Fin) + 1
,GEN_nombercama
,HOS_diagnostico_principalReceta_Indicaciones
FROM Resultados
FROM (
SELECT DISTINCT GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
,Inicio = MIN(HOS_fecha_recetaReceta_Indicaciones) OVER (
ORDER BY GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
)
,Fin = MAX(HOS_fecha_recetaReceta_Indicaciones) OVER (
ORDER BY GEN_idMedicamento_Arsenal
,GEN_idPaciente
,GroupID
)
,GEN_nombercama
,HOS_diagnostico_principalReceta_Indicaciones
FROM Resultados
) a
答案 2 :(得分:0)
试试这个,
SELECT
r1.GEN_idMedicamento_Arsenal,
r1.GEN_idPaciente,
r1.GroupID,
r1.GEN_idMedicamento_Arsenal,
r1.GEN_idPaciente,
r2.Inicio,
r2.Fin,
r2.Dias
FROM Resultados r1
INNER JOIN (SELECT GEN_idMedicamento_Arsenal,
GEN_idPaciente,
GroupID,
Inicio = MIN(HOS_fecha_recetaReceta_Indicaciones),
Fin = MAX(HOS_fecha_recetaReceta_Indicaciones),
Dias= DATEDIFF(DAY, MIN(HOS_fecha_recetaReceta_Indicaciones), MAX(HOS_fecha_recetaReceta_Indicaciones)) + 1
FROM Resultados
GROUP BY GEN_idMedicamento_Arsenal, GEN_idPaciente, GroupID
) AS r2 ON r1.GEN_idMedicamento_Arsenal = r2.GEN_idMedicamento_Arsenal
AND r1.GEN_idPaciente = r2.GEN_idPaciente
AND r1.GroupID = r2.GroupID
AND r1.HOS_fecha_recetaReceta_Indicaciones = r2.Fin