2016-08-01 101 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