Bonjour,
toujours pour ma migration de données (je mettrais developpez.com comme auteur dans les sources des scripts) je dois convertir des anciennes valeurs selon un code nouveau. Par exemple :
Avec un decode tout va bien (decode(col_old,'X',1,0) si c'est déconseillé dites-le moi).col_old='X' donner à col_new la valeur 1, sinon lui donner 0
Maintenant j'ai aussi des règles de gestion plus compliquées comme :
J'ai fait ça comme ça :si col_old_A<>'X' ET col_old_B<>'X' ET col_old_C='X' alors donner la valeur 1 à col_new
si col_old_C='Y' alors donner la valeur 2 à col_new
sinon donner la valeur null à col_new
mais c'était moche alors j'ai refait ça comme ça :select decode(
decode(col_old_A,'X','0','1')||decode(col_old_B,'X','0','1')||decode(col_old_C,'X','1','0'),
'111',1,
'002',2,
'012',2,
'102',2,
'112',2,
null)
from table_old
Et vous vous auriez fait comment? Est-ce que je passe à côté d'un moyen simple? Au niveau des performances est-ce que c'est acceptable? Merciselect CASE old_col_C
when 'Y' then '2'
else decode(
decode(old_col_A,'X','0','1')||decode(old_col_B,'X','0','1')||decode(old_col_C,'X','1','0'),
'111','1',
null)
end
from table_old
Partager