1

特定の範囲の金額に対する税が動的である税生成モジュールがあると仮定しましょう。範囲は、次のようなテーブルに格納されます。

+---------------+---------------+-----------+
|   range_from  |   range_to    |   rate    |
+---------------+---------------+-----------+   
|        0          1000            25      |
|       1001        5000            30      |
|       5001        8000            40      |
|       8000          -             50      |
+-------------------------------------------+       

この範囲テーブルには、任意の数の行を含めることができます。

では、MySQL の関数を使用して上記の表からどのように税額を達成できますか?

20000 を指定すると、次のように計算されます。

  1000 * 0.25 + 4000 * 0.30 + 3000 * 0.40 + 12000 * 0.50

使ってみましたが、

  set @remaining_amount = @provided_amount;
  for x in (select * from range_table)
  loop
      if(@provided_amount > x.range_to) 
        set @tax_amt+=(x.range_to-x.range_from)* x.rate/100;
        set @remaining_amt-= x.range_to-x.range_from; 
      end if;
      if(@provided_amount > x.range_from and x.range_to = '-') 
        set @tax_amt+=(@remaining_amount)* x.rate/100;
      end if;
  end loop;

しかし、MySQL で動作する「for ループ」が見つかりませんでした。

提案/ヘルプはありますか?

4

1 に答える 1

2

これを試してください:

SUM(IF(x < range_from, 0, 
        IF(x < range_to OR range_to IS NULL, (x - range_from)*rate*0.01, 
                                             (range_to - range_from)*rate*0.01))
于 2013-04-19T05:46:01.917 に答える