2016-08-24 11 views
0

テーブルから2つの値を照会します。私は、最初の値の小数点以下桁数を設定するために2番目の値を使用します。誰もこれを設定する方法を知っているでしょうto_char?私はフォーマットを見ていましたが、私が必要とするフォーマットに変換するintをどうやって作るのかは分かりません。ここに私のコードは次のとおりです。列の値に基づいて小数点以下桁を設定する

with tmp as (select num, scale 
     from tl) 
select fun, num 
from fun_table f, tmp 
where f.fun = tmp.scale; 

EDIT:7.00規模:1予想される出力:7.0

私は3として5.87とスケールとしてNUMを受信した場合、私は結果が5.870

NUMになりたいです数値:7スケール:4期待値出力:7.0000

+0

サンプルテーブルのデータと予想される結果を追加します。 – jarlh

+0

が追加されました。詳細情報が必要な場合はお知らせください – SJR59

+0

クエリには、tlとfun_tableという2つのテーブルが含まれています。それらのテーブルのサンプルデータですか? – jarlh

答えて

1

これは何か?

SELECT TO_CHAR(num, CONCAT('99D',RPAD('9',scale,'9'))) FROM tl 

または、scaleは0にすることができ、あなたはOracle Database 11gの上でテストさ

SELECT TO_CHAR(num, CONCAT('99',RPAD('D',scale+1,'9'))) FROM tl 

、このような場合に小数点区切り文字を表示したくない場合。

+0

私はこれが正しいかもしれないと思います!私は現時点でそれをテストするためのアクセス権を持っていないが、私はこれを正しい答えにする(またはもしそうでなければコメントする)。ありがとう!! – SJR59

0
select round(fun,scale) from fun_table f, tmp where f.fun = tmp.scale; 

多分これはあなたが探しているものですか?ロジックに応じて、ラウンド関数をフロアまたはセイルに置き換えることができます。

+0

これはnum値の場所に楽しい値を丸めるだけではありませんか?私はちょうどスケールを設定して受信しているデータのいずれかを丸めたくない – SJR59

+0

ああ、混乱のために申し訳ありませんが表示されます。次に、数値変数に対して7.0と7.00の間に違いがないので、値をcharに変換する必要があります。 oracleの構文はto_char(num、 '9999.99')です。 2番目のパラメータは、表示したいスケールの数を表します。また、スケールの列に応じて2番目のパラメータ( '9999.99')を作成する方法を理解する必要があります。 – hchaznedaroglu

+0

すごくお試しいただきありがとうございます。 int値をto_char関数にスケールを設定するのに必要な形式にする方法がわかりません。それは私が笑で助けを得ることを望んでいたもの – SJR59

関連する問題