我在 PostgreSQL 函数中有一个临时表,我想插入一个新VARCHAR
列。它应该有一个值,该值取决于表的另一列,名为“金额”。
当金额为正时,我希望将列行的值记入贷方,而当值为负数时,应将列记入借方。
我还有一个要求:我想将金额列的值四舍五入为 2 位十进制数字
我在 PostgreSQL 函数中有一个临时表,我想插入一个新VARCHAR
列。它应该有一个值,该值取决于表的另一列,名为“金额”。
当金额为正时,我希望将列行的值记入贷方,而当值为负数时,应将列记入借方。
我还有一个要求:我想将金额列的值四舍五入为 2 位十进制数字
你想跟ALTER TABLE ... ADD COLUMN
一个UPDATE
.
我最初说过ALTER TABLE ... ADD COLUMN ... USING
,但这在两个方面是错误的。ADD COLUMN
取一个DEFAULT
not 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)
很难知道这是否正确。该语句不可逆转地丢弃信息,因此它只能用于数据的副本。