PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Ajouter une nouvelle colonne dans une table temporaire

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.