我有一个问题,如何找到相应的值......
我有一个像这样的表结构:
(column-names - >其中所有column_headers(第一个除外)包含"范围")
VALUE | value_level_1 | value_level_2 | ... | value_level_N |
所以表格如下:
VALUE | 0 | 10 | 20 | 50 | 100 | 500 | 1000 | final_value |
------------------------------------------------------------------------------
15 | 1 | 0 | 3 | 5 | 0 | 0 | 0 | = 15 * (1/100) |
246 | 2 | 0 | 4 | 0 | 6 | 8 | 0 | = 246 * (6/100) |
等等......
在第一列中,是一个值(例如价格),其他值是%值..它类似于佣金模式..
我需要做的是找到最高范围(按值),达到的值...并抓住它的百分比值来计算最终列(FINAL_VALUE)...公式在上面的例子......
让它变得困难:)对于第一行,它应该是第3列(10),因为它是达到的高度值(要达到20它需要增加5)..所以SQL应该采取第3列(10)的值(= 0%)......但是!!!如果抓取的值是ZERO,我必须采用先前的值,直到它不是ZERO ...所以我采取第二列(0)....
我想只用SQL做这一切(动态SQL,程序,......没问题)
我不知道......你有什么想法吗?
谢谢
彼得
编辑:
上面的源表(它是通过动态SQL查询计算的)
company_id | value_level | commission_value (%) | product_id |
-------------------------------------------------------------------
1 | 0 | 2 | 15 |
1 | 0 | 6 | 16 |
1 | 0 | 3 | 17 |
1 | 0 | 5 | 18 |
1 | 0 | 5 | 19 |
1 | 0 | 9 | 10 |
1 | 0 | 4 | 9 |
1 | 0 | 5 | 8 |
1 | 10 | 7 | 15 |
1 | 10 | 7 | 16 |
1 | 10 | 8 | 17 |
1 | 10 | 8 | 18 |
1 | 10 | 8 | 19 |
1 | 10 | 9 | 10 |
1 | 10 | 4 | 9 |
1 | 10 | 2 | 8 |
等...所有公司都有大约30k行,它的产品和不同的value_level
使用动态查询我创建PIVOT表 - >
company_id | product_id | 0 | 10 | 20 | 50 |
--------------------------------------------------------------------------
1 | 15 | 2 | 7 | 0 | 0 |
1 | 16 | 6 | 7 | 0 | 0 |
1 | 17 | 3 | 8 | 0 | 0 |
1 | 18 | 5 | 8 | 0 | 0 |
1 | 19 | 5 | 8 | 0 | 0 |
1 | 10 | 9 | 9 | 0 | 0 |
1 | 9 | 4 | 4 | 0 | 0 |
1 | 8 | 5 | 2 | 0 | 0 |
2 | 21 | 2 | 0 | 0 | 5 |
2 | 22 | 2 | 0 | 0 | 6 |
2 | 23 | 2 | 0 | 0 | 8 |
2 | 18 | 2 | 0 | 0 | 7 |
2 | 9 | 2 | 0 | 0 | 3 |
2 | 8 | 2 | 0 | 0 | 5 |
2 | 9 | 2 | 0 | 0 | 4 |
等等......
并且在本表中我追加了sales_table的数据......我在哪里有VALUE,我需要附加到范围......正如我上面所说的那样