Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. WITH PacientesDiagnosticos AS(
  2. SELECT DISTINCT TOP 50
  3. p.IdPaciente ,
  4. a.IdAtencion as IdAtencion,
  5. (p.ApellidoPaterno+' '+p.ApellidoMaterno+' '+p.PrimerNombre) as Nombres,
  6. --esto de abajo estuve avanzando para sacar las fechas o nose si esta bien :s
  7. --DENSE_RANK() OVER (PARTITION BY a.IdAtencion ORDER BY a.FechaIngreso) AS NumFechaIngreso,
  8. a.FechaIngreso as FechaIngreso,
  9. a.FechaEgreso as FechaEgreso,
  10. d.Descripcion AS Dignostico,
  11. DENSE_RANK() OVER( PARTITION BY a.IdAtencion ORDER BY d.Descripcion) AS NumDiagnosticos
  12. FROM Pacientes p
  13. JOIN Atenciones a ON p.IdPaciente = a.IdPaciente
  14. JOIN AtencionesDiagnosticos ad ON a.IdAtencion = ad.IdAtencion
  15. JOIN Diagnosticos d ON ad.IdDiagnostico = d.IdDiagnostico
  16. )
  17. SELECT IdPaciente ,
  18. IdAtencion,
  19. Nombres,
  20. FechaIngreso,
  21. FechaEgreso,
  22. MAX( CASE WHEN NumDiagnosticos = 1 THEN Dignostico END) AS Dignostico1,
  23. MAX( CASE WHEN NumDiagnosticos = 2 THEN Dignostico END) AS Dignostico2,
  24. MAX( CASE WHEN NumDiagnosticos = 3 THEN Dignostico END) AS Dignostico3,
  25. MAX( CASE WHEN NumDiagnosticos = 4 THEN Dignostico END) AS Dignostico4,
  26. MAX( CASE WHEN NumDiagnosticos = 5 THEN Dignostico END) AS Dignostico5,
  27. MAX( CASE WHEN NumDiagnosticos = 6 THEN Dignostico END) AS Dignostico6
  28. FROM PacientesDiagnosticos
  29. GROUP BY IdPaciente,
  30. IdAtencion,
  31. Nombres,
  32. FechaIngreso,
  33. FechaEgreso;
  34.  
  35. ROW_NUMBER() OVER (PARTITION BY p.IdPaciente, ORDER BY FechaIngreso) AS RN
  36.  
  37. FROM PacientesDiagnosticos T1
  38. LEFT JOIN PacientesDiagnosticos T2
  39. ON T2.IdPaciente = T1.IdPaciente
  40. AND T2.RN = T1.RN - 1
  41.  
  42. WITH PacientesDiagnosticos AS(
  43. SELECT DISTINCT TOP 50
  44. p.IdPaciente ,
  45. a.IdAtencion as IdAtencion,
  46. (p.ApellidoPaterno+' '+p.ApellidoMaterno+' '+p.PrimerNombre) as Nombres,
  47. --esto de abajo estuve avanzando para sacar las fechas o nose si esta bien :s
  48. --DENSE_RANK() OVER (PARTITION BY a.IdAtencion ORDER BY a.FechaIngreso) AS NumFechaIngreso,
  49. a.FechaIngreso as FechaIngreso,
  50. a.FechaEgreso as FechaEgreso,
  51. d.Descripcion AS Dignostico,
  52. DENSE_RANK() OVER (PARTITION BY a.IdAtencion ORDER BY d.Descripcion) AS NumDiagnosticos,
  53. ROW_NUMBER() OVER (PARTITION BY p.IdPaciente, ORDER BY FechaIngreso) AS RN
  54. FROM Pacientes p
  55. JOIN Atenciones a ON p.IdPaciente = a.IdPaciente
  56. JOIN AtencionesDiagnosticos ad ON a.IdAtencion = ad.IdAtencion
  57. JOIN Diagnosticos d ON ad.IdDiagnostico = d.IdDiagnostico
  58. )
  59. SELECT T1.IdPaciente,
  60. T1.IdAtencion,
  61. T1.Nombres,
  62. T1.FechaIngreso,
  63. T2.FechaIngreso,
  64. T1.FechaEgreso,
  65. MAX( CASE WHEN T1.NumDiagnosticos = 1 THEN T1.Dignostico END) AS Dignostico1,
  66. MAX( CASE WHEN T1.NumDiagnosticos = 2 THEN T1.Dignostico END) AS Dignostico2,
  67. MAX( CASE WHEN T1.NumDiagnosticos = 3 THEN T1.Dignostico END) AS Dignostico3,
  68. MAX( CASE WHEN T1.NumDiagnosticos = 4 THEN T1.Dignostico END) AS Dignostico4,
  69. MAX( CASE WHEN T1.NumDiagnosticos = 5 THEN T1.Dignostico END) AS Dignostico5,
  70. MAX( CASE WHEN T1.NumDiagnosticos = 6 THEN T1.Dignostico END) AS Dignostico6
  71. FROM PacientesDiagnosticos T1
  72. LEFT JOIN PacientesDiagnosticos T2
  73. ON T2.IdPaciente = T1.IdPaciente
  74. AND T2.RN = T1.RN - 1
  75. GROUP BY T1.IdPaciente,
  76. T1.IdAtencion,
  77. T1.Nombres,
  78. T1.FechaIngreso,
  79. T2.FechaIngreso,
  80. T1.FechaEgreso;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement