- - PR -
小数点1桁まで表示したいのですが。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-06-15 15:14
こんにちは。
初歩的な質問ですみません。 SQLで粗利益率を出そうとしています。 以下のように計算したあと、 ROUND(((売上 - (作業費 + 外注費 + 経費)) * 1000 / 売上),0) 10で割って、小数点1桁まで表示したいと思っています。 452 410 332 のような結果を、 45.2 41.0 33.2 のような表示になるようにしたいのです。(常に小数点1桁まで表示) ですが、これを10で割ると、 45 41 33 のようになってしまいます。 どのようにしたらよいのでしょうか。 お願いします。 | ||||
|
投稿日時: 2006-06-15 15:24
to_char() 関数のフォーマット指定で対応できるかとは思いますが。 select to_char(deptno, 'FM00.0') from dept; ただ、RDBMS とか接続に使用したアプリケーションが不明なので 何とも言えませんが、取ってきたデータを他の処理で使い回すので あれば、むやみにデータ型を変更するような方法よりも アプリケーションで表示するときに変更した方がよいかも。 以下追記: 後でよく見たら、round(...,0) してるのに 33.2 は出しようが ないですね。小数点以下を丸めてるんですから。 _________________ もしもし@RMAN 友の会 [ メッセージ編集済み 編集者: もしもし 編集日時 2006-06-15 15:27 ] | ||||
|
投稿日時: 2006-06-15 15:25
ROUNDを使ってますから、当然のごとく、小数点は飛びますね・・・。小数点第一まで表示するだけで良いなら、 ROUNDに引き渡す値を10倍にして、ROUNDの結果を10で割るだけですね。 これ、DBの問題というよりもアルゴリズムの問題ですね。 あと、ROUNDですが、DBにより意味合いが多少違うかもしれませんので、 RDBMSの名前ぐらい書くべきですね。 | ||||
|
投稿日時: 2006-06-15 15:28
こんにちは。
RDBMSは何を使っているのかわかりませんが、 SQL Serverだと・・ 以下のような感じでキャストすればイケルかと思います。 -------------------------------------------------------------- SELECT Cast(ROUND(452/10,0) AS Decimal(5,1)) AS 粗利益率 | ||||
|
投稿日時: 2006-06-15 15:37
ありがとうございます。
すみません。 データベースの種類を記入していませんでした。 SQLServer 2005 です。 | ||||
1
