Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] consulta con prefencia de registros

Estas en el tema de consulta con prefencia de registros en el foro de SQL Server en Foros del Web. Saludos señores necesito su colaboracion: Tengo una tabla donde guardo los horarios originales y modificados de un servicio de hospital, por cada horario se crea ...
  #1 (permalink)  
Antiguo 03/03/2015, 09:35
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
consulta con prefencia de registros

Saludos señores necesito su colaboracion:
Tengo una tabla donde guardo los horarios originales y modificados de un servicio de hospital, por cada horario se crea in id autoincrement, los campos que son iguales para cada horario son mes,año,servicio,especialidad y el unico que difencia a un horario original de uno modificado es el campo modificado donde guardo si es original o no, la cuestion es: como hago una consulta que me muestre un horario modificado por emcima del original si existe y si no que muestre el original dado que no puedo mostrar ambos ya que el modificado es el horario actualizado .
  #2 (permalink)  
Antiguo 03/03/2015, 09:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta con prefencia de registros

un ejemplo de tus datos ayudaria a una mejor respuesta :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 03/03/2015, 10:31
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

te refieres a la estructura de la tabla?
  #4 (permalink)  
Antiguo 03/03/2015, 10:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta con prefencia de registros

Ejemplo de tus datos no de la estructura, la estructura ya la diste, pero seria algo bueno ver algo como:

tengo esto:

campo1 campo2 campo3
1 a b
2 c d

y quiero esto:

1 a
2 d
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 03/03/2015, 10:41
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

son 31 campos de tipo varchar mas los campos mes,servicioextra,especialidad,año y modificado que es donde identifico si el horario es original o es modificado, lo de modificado es que se hacen cambios entre compañeros y deben quedar registrados pero debo mantener siempre como referencia el original por requerimietos de la jefatura. gracias pura vida!!!
  #6 (permalink)  
Antiguo 03/03/2015, 10:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

okokok
seria asi:
idh,servicioextra,especialidad,mes,año,modificado
1 , medicina , cardio, 03 ,2015,Original
idh,servicioextra,especialidad,mes,año,modificado
2 , medicina , cardio, 03 ,2015,modificado
como veras tengo esos 2 horarios de la misma especialidad y servicio en la misma tabla y necesito mostrar si existe el horario modificado por por encima del original.
si por alguna razon durante el mes no se hizo ninguna modificacion a un ahorario me muestre el original pero si existe un modificado que prefiera miostrar ese ya que seria el actualizado.
  #7 (permalink)  
Antiguo 03/03/2015, 11:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta con prefencia de registros

con algo como esto se resuelve:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. servicio VARCHAR(20),
  4. especialidad VARCHAR(20),
  5. mes INT,
  6. horario datetime,
  7. modificado VARCHAR(20)
  8. )
  9.  
  10. INSERT INTO #temp VALUES ('medicina','cardio',1,getdate(),'Original')
  11. INSERT INTO #temp VALUES ('medicina','cardio',1,getdate()+1,'Modificado')
  12. INSERT INTO #temp VALUES ('medicina','no se',2,getdate()+2,'Original')
  13. INSERT INTO #temp VALUES ('medicina','no se',3,getdate()+3,'Original')
  14. INSERT INTO #temp VALUES ('medicina','otro',4,getdate()+4,'Original')
  15. INSERT INTO #temp VALUES ('medicina','otro',4,getdate()+5,'Modificado')
  16.  
  17. SELECT * FROM #temp
  18.  
  19. SELECT t2.servicio,t2.especialidad,t2.mes,CASE WHEN isnull(t1.servicio,'')<>'' THEN t1.horario ELSE t2.horario END AS horario FROM(
  20. SELECT servicio,especialidad,mes,horario FROM #temp WHERE modificado='modificado' GROUP BY servicio,especialidad,mes,horario
  21. ) AS t1 RIGHT JOIN
  22. (
  23. SELECT servicio,especialidad,mes,horario FROM #temp WHERE modificado='original' GROUP BY servicio,especialidad,mes,horario
  24. ) AS t2 ON (t1.servicio=t2.servicio AND t1.especialidad=t2.especialidad AND t1.mes=t2.mes)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 03/03/2015, 11:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

gracias viejo voy a probarlo, parece ingenioso.
  #9 (permalink)  
Antiguo 03/03/2015, 11:32
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

Basicamente sugieres crear una tabla temp como muletilla, insertar en ella los valores de la tabla de horarios y luego comparar cada valor para ver si existe... estoy en lo correcto?
  #10 (permalink)  
Antiguo 03/03/2015, 12:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta con prefencia de registros

No, basicamente mi sugerencia es el query, porque creo una temporal, porque no tengo la estructura de los datos que tu tienes, y para que se entienda mejor el resultado te lo presento en una tabla temporal :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 03/03/2015, 14:27
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

serias tan amable de explicarme que dice el query? como funciona ya que no se mucho de sql y me gustaria saber.
  #12 (permalink)  
Antiguo 03/03/2015, 14:41
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

SELECT t2.servicioextra,t2.espe,t2.mes,CASE WHEN isnull(t1.servicioextra,'')<>'' THEN t1.extras ELSE t2.extras END AS horario FROM(

esa es la parte que menos entiendo
  #13 (permalink)  
Antiguo 03/03/2015, 15:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta con prefencia de registros

El query lo que hace es un join de 2 selects, uno para obtener los registros "modificados" y otro para obtener los registros sin modificar, al unir estos 2 queries van a salir 2 resultados para los que tienen un registro modificado, uno con el modificado y otro con el sin modificar, pero tu ocupas que cuando haya un registro modificado entonces presente la fecha de ese registro correcto?? para eso es esta linea:

Aqui seleccina el servicio, la especialidad, el mes y cuando se cumple la condicion que ocupas (que sea un registro modificado) presenta la fecha de dicho registro.....


Código SQL:
Ver original
  1. SELECT t2.servicio,t2.especialidad,t2.mes,CASE WHEN isnull(t1.servicio,'')<>'' THEN t1.horario ELSE t2.horario END AS horario
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 04/03/2015, 07:10
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

Saludos libras, gracias por la explicacion, fijate que trate de hechar a andar el codigo adaptandolo a mis necesidades y me salia un error en esta parte "CASE WHEN isnull(t1.servicio,'')<>''" asi que por falta de tiempo y la presion de mi jefe me fui por la esquina y lo que hice fue:
1:crear un campo en la tabla llamado "tienemod".
2:A ese campo en el momento de la creacion de un horario nuevo va tener valor de 1.
3:Cuando se crea un horario modificado el valor del tienemod va a pasar a 2 (el del horario original).
4:Al crearse el modificado lo va hacer con el valor 3.
Al final en el select solo digo que selecione los horario que tienemod sea igual a 1 o 3 evitando de esta forma que incluya los originales que ya tienen un horario modificado actualizado.
Que te parece? poco tosco y menos ingenioso que el tuyo pero al menos pude salir del apuro, de nuevo muchas gracias espero que alguien mas chispa que yo pueda usar tu codigo y salir de una forma mas elegante del embrollo, pero para los que no pus ahi esta mi solucion jajaaja
  #15 (permalink)  
Antiguo 04/03/2015, 08:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta con prefencia de registros

aparte de un poco tosca la solucion, ese es un parche mal puesto para salir del apuro y eso de agregar campos a una base de datos para resolver problemas de la logica de negocio no le veo mucho sentido, y si te modifican mas de 2 veces un horario?? tendrias valores que no contemplas en tu logica......esa solucion te ayudo a salir del problema pero no es la mas optima......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #16 (permalink)  
Antiguo 04/03/2015, 10:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: consulta con prefencia de registros

si modificanmas veces el horario no hay problema ya que ni siquiera se contempla ese campo en el qwery pero es todo lo demas te doy la razon, es un parche mientras pongo a funcionar tu solucion... al menos calle a mi jefe gracias.

Etiquetas: registros, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:08.