SQL - Informix - Modification du type de données d'une colonne de numérique à caractère
Question
I ai une table temporaire qui a des valeurs numériques entières dans une colonne. Je veux soit remplacer les valeurs entières avec des valeurs de caractères en fonction de certains critères ou je veux ajouter une autre colonne de type de caractères qui insère automatiquement les valeurs en se basant sur des critères.
Si x <= 1, passez à "SP" ou faire nouvelle colonne et stocker "SP" dans cette ligne
Si x> 1, le changement de « FA » ou faire nouvelle colonne et stocker « FA » dans cette ligne
En outre, les commandes alter ne sont pas autorisés sur les tables temporaires dans ma version de Informix.
La solution
Autres conseils
Vous avez raison, vous ne pouvez pas modifier une table temporaire. Ajout d'une colonne supplémentaire avec cette valeur dérivée peut être fait avec une déclaration de CASE
, à savoir:
SELECT enroll.ud, enroll.yr, (CASE
WHEN enrollsess.yr_offset <=1 THEN "FA"
ELSE "SP" END)::CHAR(2) AS sess, ...
Le casting (par exemple les parenthèses et ::CHAR(2)
) ne sont probablement pas nécessaire.
Si la logique peut être exprimée comme zéro / non nul (ce n'est pas clair dans votre exemple, si yr_offset peut être négatif), alors il est encore plus simple:
SELECT enroll.id, enroll.yr,
DECODE(enrollsess.yr_offset, 0, "FA", "SP")::CHAR(2) AS sess, ...