2

VARCHARPostgreSQL関数に一時テーブルがあり、新しい列を挿入したいと思います。「amount」という名前のテーブルの別の列に依存する値が必要です。

金額が正の場合は列の行の値を貸方にし、値が負の場合は列の値を借方にします。

もう1つリクエストがあります:金額列の値を小数点以下2桁で四捨五入したい

4

1 に答える 1

4

続いALTER TABLE ... ADD COLUMNUPDATE

私は最初に言っALTER TABLE ... ADD COLUMN ... USINGたが、それは2つの点で間違っていた。式も式も他の列を参照していない可能性がADD COLUMNあるため、1回のパスでそれを行うことはできませんDEFAULTUSINGDEFAULTUSING

だからあなたはしなければなりません:

 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)、コンテキストがないと、それが正しいかどうかを判断するのは困難です。そのステートメントは不可逆的に情報を破棄するため、データのコピーでのみ使用する必要があります。

于 2012-08-22T07:26:07.410 に答える