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

Procedimiento almacenado con upate condicional

Estas en el tema de Procedimiento almacenado con upate condicional en el foro de SQL Server en Foros del Web. Hola de antemano, Necesitaría ayudar para crear un procedimiento almacenado que me actualizase el valor de un campo dentro de la misma fila, en función ...
  #1 (permalink)  
Antiguo 04/12/2008, 19:01
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
Procedimiento almacenado con upate condicional

Hola de antemano,

Necesitaría ayudar para crear un procedimiento almacenado que me actualizase el valor de un campo dentro de la misma fila, en función de un criterio.
Ej. tengo
5 campos con importe, fecha, 2007,2008,2009.

Lo que necesito es que hiciera algo parecido a:

UPDATE tbl
set 2007 = CASE fecha = 2007 THEN importe
set 2008 = CASE fecha = 2008 THEN importe
set 2009 = CASE fecha = 2009 THEN importe
end

Lo he probado, he estado buscando pero no he encontrado nada.
¿Se os ocurre como hacerlo?

Un saludo,
  #2 (permalink)  
Antiguo 04/12/2008, 19:50
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento almacenado con upate condicional

perdona, ¿como se llaman los campos? (dicen que son 5)
  #3 (permalink)  
Antiguo 05/12/2008, 07:59
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Procedimiento almacenado con upate condicional

Código sql:
Ver original
  1. UPDATE tbl
  2. SET 2007 = CASE WHEN YEAR(fecha) = 2007 THEN importe ELSE 0 END,
  3.     2008 = CASE WHEN YEAR(fecha) = 2007 THEN importe ELSE 0 END,
  4.     2009 = CASE WHEN YEAR(fecha) = 2007 THEN importe ELSE 0 END
  5. WHERE campo1=@param1
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
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 18:58.