質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

13895閲覧

税抜から税込価格を出すSQL

yamaguti

総合スコア185

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2017/12/08 01:07

編集2017/12/08 01:36

お世話になっております。

データのコンバートを行っておりまして
データの元には、税抜価格しかもっておりません。

SQLで計算すると、ずれてしまうことがあります。
どのように税込み価格を出せばずれないでしょうか。

SQL

1select trunc(税抜*1.08) from 商品マスタ 2--税抜:3240円 税込3499円 1円ズレ

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

date

2017/12/08 01:21

例えばこういうデータがこうなってほしいという例を見せてください。また使用しているデータベースをタグに追加してください
coco_bauer

2017/12/08 01:24

ずれるというのは、SQLで計算したどのような結果と、どのようなSQLではない方法で計算した結果が異なるというのですか? 具体的な方法と、計算結果例(値が異なるもの)を示してください。
guest

回答3

0

ベストアンサー

明細行単位、伝票単位、合計に対してどれに消費税計算をするかによって
当然結果はちがってきます。
明細位行を集計しても伝票の理論値とは合致しないし
伝票を集計しても合計の理論値は合致しません(注:誤記修正)。

会計上は合計金額に対する消費税計算をするのが正しいので、
それを厳密に解釈するなら明細行や伝票では小数点以下端数をもつしかありません
(消費税率が混在したりする場合は除く)
もちろん実際の金銭出納に端数はありえないので適当なところでまとめて
合計金額ででてくる差異を「消費税差異」として処理するのが一般的です。
税制上は最終的にとりまとめた合計の仮請消費税と支払済消費税の差異分を
納税するので、個々の取引での差異は理論的には吸収・相殺されます。

つまりは、消費税はズレても問題ないということです。
DBに登録する場合は、明細単位で適当にまるめて、消費税額として
別カラムで管理してください

投稿2017/12/08 01:57

編集2017/12/08 02:10
yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

消費税の計算は端数が出て当たり前で、
税込価格の半端な数字を避けるために
本体価格+1円する事例もなくもないです。

また、財務省のホームページにこういう記載があります:

「税抜価格」に上乗せする消費税相当額に1円未満の端数が生じる場合がありますが、その端数をどのように処理 (切捨て、切上げ、四捨五入など)して「税込価格」を設定するかは、それぞれの事業者のご判断によることとなります。

消費税の計算ルールを事業体(会社や店舗)でどうやるかを明文化してあれば、
それにしたがってアルゴリズムを組むだけです。

切り捨て→floor()
切り上げ→ceil()
四捨五入→round()を使わず、0.5を加えた上でfloor()
(mysql系に限らず多くの処理系で、ROUND() で「偶数丸め(Banker's Rounding)」ルールが使用されるということで、厳密な四捨五入ではないことに注意。)


以下、質問意図を間違った回答だけど
税込価格→税抜価格に変換する必要がある場合の対処法:

私が考えたアルゴリズムじゃないですが、
前任者がこんな計算式を使ってました:
(税込価格+0.999)÷1.08の小数点切り捨て
select floor(tax_included_price+0.999)/1.08 from ~
とでもなるのでしょうか。

1円まで行かない数を足してから割ることで、
1円誤差を産まないようにする方法のようですが。
今後消費税が変わっても通用するかはわかりません。
その時は0.9999とか増やせばいいのかもしれませんが。

税抜価格と消費税を、ちゃんと別枠で管理するよう
徹底した設計にするべきですよね。

投稿2017/12/08 02:03

編集2017/12/08 02:26
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

消費税を計算した際に生じる端数の処理については、事業者の判断によるとされています。
税抜:3240円に8%の消費税を付加すると3499.2円となりますから、税込み価格は3499円(端数切り捨て、端数四捨五入)も3500円(端数切り上げ)もありえます。

3499円が1円ずれとなるということは、端数切り上げで税込み価格を計算したいという事だと思います。
端数を切り上げるためには、trunc(端数を切り捨て)関数の代わりに、ceiling(端数を切り上げ)関数を使います。

select ceiling(税抜*1.08) from f0010

<参考>
(財務省) 総額表示Q&A では、以下のように説明されています。
『(Q7) 現在の「税抜価格」を基に「税込価格」を設定する場合に円未満の端数が生じることがありますが、どのように処理して値付けを行えば良いのですか。

(答)
1.総額表示の義務付けは、消費者が値札や広告などを見れば、『消費税相当額を含む支払総額』を一目で分かるようにするためのものです。したがって、「税込価格」の設定に当たっては、一義的には、現在の「税抜価格」に消費税相当額を上乗せした金額を「税込価格」として価格設定することになります。

2.この場合、ご質問のように「税抜価格」に上乗せする消費税相当額に1円未満の端数が生じる場合がありますが、その端数をどのように処理 (切捨て、切上げ、四捨五入など)して「税込価格」を設定するかは、それぞれの事業者のご判断によることとなります。』

投稿2017/12/08 02:03

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問