SQL Server - Actualizar-Problema

 
Vista:

Actualizar-Problema

Publicado por Jose M (65 intervenciones) el 26/05/2010 11:35:48
Buenos días, esta misma mañana he realizado un proceso de actualizacion. Es el siguiente:
-------------------------------------
use BBDD_A

UPDATE Tabla_A
SET Turno =
CASE
WHEN ((dia = 'sabado' or dia = 'sábado') AND motivo=0 AND nosirve BETWEEN 600 and 900) THEN 12
WHEN ((dia = 'sabado' or dia = 'sábado') AND motivo=0 AND nosirve BETWEEN 901 and 1230) THEN 14
WHEN ((dia = 'sabado' or dia = 'sábado') AND motivo=0 AND nosirve BETWEEN 1231 and 1430) THEN 16
WHEN ((dia = 'sabado' or dia = 'sábado') AND motivo=0 AND nosirve BETWEEN 1431 and 1600) THEN 15
WHEN (dia = 'domingo' AND motivo=10 AND nosirve BETWEEN 700 and 900) THEN 17
WHEN (dia = 'domingo' AND motivo=10 AND nosirve BETWEEN 1400 and 1600) THEN 18
END
--------------------------------------

Al realizar la actualizacion, ha hecho los cambios puestos en la consulta, PERO, en los casos no especificados en los diferenes "when" ha establecido el campo 'Turno' como NULL.

Eso por qué??

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Actualizar-Problema

Publicado por Isaias (4558 intervenciones) el 27/05/2010 02:43:07
El campo TURNO,¿ya tenia datos antes de ejecutar tu actualizacion?

Deberias consideras en tu WHEN el "dia IS NULL" que haga algo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizar-Problema

Publicado por Jose M (65 intervenciones) el 27/05/2010 11:02:52
En el campo turno, en el 95% de ellos, seguro que si tenían datos, en el resto lo dudo.

En la consulta tan solo ponía los días Sábados y Domingos para hacer actualizaciones. Y sin embargo a parte de los cambios que especifico, que esos los ha hecho bien, el resto de los casos ha establecido el campo TURNO como Null. Incluídos los demás días de la semana.

Por qué me hace un cambio en un registro cuyo día es Lunes, Martes,...o Viernes??
La consulta iba dirigida sólo a los sábados o domingos
-------------------------------------------------------------------------------------------------------
Como análisis, he estado haciendo otra serie de pruebas.
He creado una tabla temporal, y en la consulta de actualización, he puesto un OUTPUT para ingresar en ella los registros insertados y eliminados. Y justo después hago un Select sobre esa tabla temporal.

En los resultados del Select sólo deberían aparecer los relacionados con los Sábados y Domingos no? Aparecen todos los días de la semana
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar