PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Hinzufügen einer neuen Spalte in einer temporären Tabelle

Sie möchten ALTER TABLE ... ADD COLUMN gefolgt von einem UPDATE .

Ich sagte anfangs ALTER TABLE ... ADD COLUMN ... USING aber das war in zweierlei Hinsicht falsch. ADD COLUMN nimmt einen DEFAULT nicht USING - und Sie können es nicht in einem Durchgang machen, weil weder ein DEFAULT Ausdruck noch ein USING Ausdruck darf nicht auf andere Spalten verweisen.

Sie müssen also Folgendes tun:

 ALTER TABLE tablename ADD COLUMN colname varchar;
 UPDATE tablename SET colname = ( CASE WHEN othercol < 0 THEN 'Credit' ELSE 'Debit' END );

Überlegen Sie genau, ob Null 'Soll' oder 'Haben' sein soll und passen Sie den CASE an entsprechend.

Verwenden Sie zum Runden round(amount,2) . Ihre Frage enthält nicht genügend Details, um sicher zu sein, wie; wahrscheinlich per UPDATE Ändern Sie die temporäre Tabelle mit UPDATE thetable SET amount = round(amount,2) aber ohne den Kontext ist es schwer zu wissen, ob das richtig ist. Diese Aussage wirft Informationen unwiderruflich weg daher sollte es nur auf einer Kopie der Daten verwendet werden.