在临时表中添加新列

时间:2012-08-22 07:16:38

标签: sql postgresql

我在PostgreSQL函数中有一个临时表,我想插入一个新的VARCHAR列。它的值应该取决于表的另一列,名为“amount”。

当金额为正数时,我希望列行的值为贷方,当值为负时,该列应为借方。

我还有一个请求:我想以2位十进制数字来计算amount列的值

1 个答案:

答案 0 :(得分:4)

您希望ALTER TABLE ... ADD COLUMN后跟UPDATE

我最初说ALTER TABLE ... ADD COLUMN ... USING,但这有两个错误。 ADD COLUMN需要DEFAULT而非USING - 并且您不能一次性完成,因为DEFAULT表达式和USING表达式都不能引用其他专栏。

所以你必须这样做:

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

仔细考虑零是否应为“借记”或“信用”,并相应调整CASE

对于四舍五入,请使用round(amount,2)。你的问题没有足够的细节让我确定如何;可能是UPDATE临时表与UPDATE thetable SET amount = round(amount,2),但没有上下文,很难知道这是否正确。 该声明不可逆转地抛弃信息,因此它只应用于数据的副本。

相关问题