Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/04/2012, 09:03
Avatar de Libras
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: Sentencia update con if

metes la consulta de donde sacas los valores en un subquery en el ejemplo t1 y dentro de este subquery puedes poner un case para lo que necesitas:
Para que se entienda mejor
Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. nombre VARCHAR(10),
  4. date1 datetime,
  5. date2 datetime,
  6. STATUS bit
  7. )
  8.  
  9. INSERT INTO #temp VALUES ('libras',getdate(),getdate()-1,1)
  10. INSERT INTO #temp VALUES ('libras1',getdate(),getdate()-2,0)
  11. INSERT INTO #temp VALUES ('libras2',getdate(),getdate()-3,0)
  12. INSERT INTO #temp VALUES ('libras3',getdate(),getdate()-4,1)
  13. INSERT INTO #temp VALUES ('libras4',getdate(),getdate()-5,1)
  14.  
  15.  
  16. SELECT * FROM #temp
  17.  
  18. nombre  date1   date2   STATUS
  19. libras  2012-04-18 10:59:01.860 2012-04-17 10:59:01.860 1
  20. libras1 2012-04-18 10:59:01.860 2012-04-16 10:59:01.860 0
  21. libras2 2012-04-18 10:59:01.860 2012-04-15 10:59:01.860 0
  22. libras3 2012-04-18 10:59:01.860 2012-04-14 10:59:01.860 1
  23. libras4 2012-04-18 10:59:01.860 2012-04-13 10:59:01.860 1
  24.  
  25.  
  26. UPDATE #temp
  27. SET date1=t1.fecha
  28. FROM
  29. (
  30. SELECT CASE WHEN STATUS=1 THEN date2 ELSE date1 END AS fecha,nombre,STATUS FROM #temp
  31. ) AS t1 WHERE t1.nombre=#temp.nombre
  32.  
  33. SELECT * FROM #temp
  34.  
  35. nombre  date1   date2   STATUS
  36. libras  2012-04-17 10:59:01.860 2012-04-17 10:59:01.860 1
  37. libras1 2012-04-18 10:59:01.860 2012-04-16 10:59:01.860 0
  38. libras2 2012-04-18 10:59:01.860 2012-04-15 10:59:01.860 0
  39. libras3 2012-04-14 10:59:01.860 2012-04-14 10:59:01.860 1
  40. libras4 2012-04-13 10:59:01.860 2012-04-13 10:59:01.860 1

Si te fijas nada cambio la fecha date1 por la fecha date2 solo en los campos en donde status=1 que es mas o menos lo que necesitas no??

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me