Vous voulez ALTER TABLE ... ADD COLUMN
suivi d'un UPDATE
.
J'ai d'abord dit ALTER TABLE ... ADD COLUMN ... USING
mais c'était faux sur deux points. ADD COLUMN
prend un DEFAULT
pas USING
- et Vous ne pouvez pas le faire en une seule passe car ni un DEFAULT
expression ni un USING
L'expression ne peut pas faire référence à d'autres colonnes.
Vous devez donc faire :
ALTER TABLE tablename ADD COLUMN colname varchar;
UPDATE tablename SET colname = ( CASE WHEN othercol < 0 THEN 'Credit' ELSE 'Debit' END );
Réfléchissez bien si zéro doit être 'Débit' ou 'Crédit' et ajustez le CASE
en conséquence.
Pour arrondir, utilisez round(amount,2)
. Il n'y a pas assez de détails dans votre question pour que je sois sûr de savoir comment ; probablement par UPDATE
mettre la table temporaire avec UPDATE thetable SET amount = round(amount,2)
mais sans le contexte, il est difficile de savoir si c'est vrai. Cette déclaration supprime irréversiblement des informations il ne doit donc être utilisé que sur une copie des données.