PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Adicionando uma nova coluna em uma tabela temporária


Você quer ALTER TABLE ... ADD COLUMN seguido por um UPDATE .

Eu inicialmente disse ALTER TABLE ... ADD COLUMN ... USING mas isso estava errado em dois aspectos. ADICIONAR COLUNA recebe um DEFAULT não USANDO - e você não pode fazer isso em uma passagem porque nem um DEFAULT expressão nem um USING expressão pode não se referir a outras colunas.

Então você deve fazer:
 ALTER TABLE tablename ADD COLUMN colname varchar;
 UPDATE tablename SET colname = ( CASE WHEN othercol < 0 THEN 'Credit' ELSE 'Debit' END );

Pense cuidadosamente se zero deve ser 'Débito' ou 'Crédito' e ajuste o CASE adequadamente.

Para arredondamento, use round(amount,2) . Não há detalhes suficientes em sua pergunta para eu ter certeza de como; provavelmente por UPDATE ndo a tabela temporária com UPDATE thetable SET amount =round(amount,2) mas sem o contexto é difícil saber se está certo. Essa declaração joga informações fora de forma irreversível portanto, deve ser usado apenas em uma cópia dos dados.