2016-08-01 94 views
0

我有查询其重新命名为“Resultados”,这个查询的输出是这样的:从SQL Server MAX值的其他数据

Resultados

,然后我有一个返回beggining和结束查询consecutives日期由场GEN_idMedicamento_Arsenal,GEN_idPaciente和群ID

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 

查询的输出“Resultados”分组日期是这样的:

Output

这个输出是正确的,但我需要,我不能把该组中由子句,例如,我需要的字段GEN_nombreCama中,MAX(日期)的行的HOS_diagnostico_principalReceta_Indicaciones我重命名为等领域“翅”,有了这个条件预期的输出是这样的:

Expected Output

回答

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 
+0

我测试你的答案,但不是我需要的输出,我需要的额外字段缺失,“Finic”,“Fin”,“Dias”的值错误 – user953851

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 
+0

现在我有了额外的字段,但“Inicio”,“Fin”,“Dias”的值仍然是错误的 – user953851

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 
+0

嗨,这个工程,但我要测试这个查询与数据库中的更多数据来看看效率是多少,谢谢! – user953851