sql >> Database >  >> RDS >> PostgreSQL

Een nieuwe kolom toevoegen aan een tijdelijke tabel

U wilt ALTER TABLE ... ADD COLUMN gevolgd door een UPDATE .

Ik zei aanvankelijk ALTER TABLE ... ADD COLUMN ... USING maar dat was in twee opzichten fout. ADD COLUMN neemt een DEFAULT niet USING - en je kunt het niet in één keer doen omdat geen van beide een DEFAULT uitdrukking noch een USING uitdrukking mag niet verwijzen naar andere kolommen.

Dus je moet doen:

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

Denk goed na of nul 'Debet' of 'Credit' moet zijn en pas de CASE . aan dienovereenkomstig.

Gebruik voor afronding round(amount,2) . Er is niet genoeg detail in uw vraag voor mij om zeker te weten hoe; waarschijnlijk door UPDATE ing de tijdelijke tabel met UPDATE thetable SET amount = round(amount,2) maar zonder de context is het moeilijk om te weten of dat klopt. Die verklaring gooit onomkeerbaar informatie weg dus het mag alleen worden gebruikt op een kopie van de gegevens.




  1. SQL-geneste subquery die verwijst naar de grootouderskolom

  2. Bereken het tijdsverschil tussen twee rijen

  3. Verwijder de vorige markering en voeg een markering toe in de bijgewerkte lat lng

  4. Typ die door de tabel gewaardeerde parameters sterk