Tengo 4 columnas, Sup1, Sup2, Sup3 y Vers.

Tengo que actualizar los valores de Vers de sup1, si sup1 nulo obtiene valores de sup2, si sup 2 nulo obtiene valores de sup3. si Sup1, Sup2, Sup3 son nulos, entonces NULL.

Se parece a esto :

sup1 sup2 sup3 vers
1               1
      2         2
           3    3
4     4    5    5
0     0    0   NULL

He intentado esto

 update CRATEST set  
 --more next ( 4 to n ) columns here if required       
 Vers = (case when (Sup1 is null) then Sup2  
         when (Sup2 is null) then sup3 
         when (sup3 is null) then Sup1 else 'NULL' end);
sql
1
Tri 17 oct. 2019 a las 05:42

1 respuesta

La mejor respuesta

Puedes usar la función coalesce()

update CRATEST set 
Vers =  case when (coalesce(Sup1, 0) + coalesce(Sup2, 0) + coalesce(Sup3, 0)) = 0 then NULL
    else coalesce(Sup3, Sup2, Sup1) end
2
Ed Bangga 17 oct. 2019 a las 03:06