I'm not succeeding to get this update command right:
IDSemana Lunes Martes Miercoles Jueves Viernes
---------------------------------------------------------------
XXXXXXX null null null null null
UPDATE Semanas set Lunes = CASE WHEN datepart(weekday,q.fecha) = 1 THEN @DiaLibre ELSE Lunes END,
Martes = CASE WHEN datepart(weekday,q.fecha) = 2 THEN @DiaLibre ELSE Martes END,
Miercoles = CASE WHEN datepart(weekday,q.fecha) = 3 THEN @DiaLibre ELSE Miercoles END,
Jueves = CASE WHEN datepart(weekday,q.fecha) = 4 THEN @DiaLibre ELSE Jueves END,
Viernes = CASE WHEN datepart(weekday,q.fecha) = 5 THEN @DiaLibre ELSE Viernes END
FROM (
Select TableA.fecha, SM.IDSemana
From Semanas SM
inner join #TableA as TableA on SM.Ejercicio = year(TableA.fecha) and
SM.NumeroSemana = DATEPART(week,TableA.fecha) and
SM.IDCalendario = TableA.IDCalendario
WHERE TableA.Cnt = 1 and TableA.Type = 1 and TableA.Accepted = 1 and TableA.value = 1) q
WHERE q.IDSemana = Semanas.IDSemana
To make it more easy to understand here is what the bracket (Table q) looks like:
fecha IDSemana
--------------------
20.2.2017 XXXXXXX
21.2.2017 XXXXXXX
22.2.2017 XXXXXXX
so what I would expect is that for IDSemana XXXXXX
IDSemana Lunes Martes Miercoles Jueves Viernes
---------------------------------------------------------------
XXXXXXX DiaLibre DiaLibre DiaLibre null null
but I get:
IDSemana Lunes Martes Miercoles Jueves Viernes
---------------------------------------------------------------
XXXXXXX DiaLibre null null null null
it is not related to the SQL culture. I place a SET LANGUAGE Spanish on top, so Lunes (Monday) is 1 a.s.o. The 20.2.2017 is Monday (1), 21.2.2017 is Tuesday (2) and 22.2.2017 Wednesday (3).