【发布时间】:2015-12-14 11:39:27
【问题描述】:
如何获取列的百分比,然后将其作为行插入
Col1 item TotalAmount**
1 ABC 5558767.82
2 ABC 4747605.5
3 ABC 667377.69
4 ABC 3844204
6 CTB 100
7 CTB 500.52
我需要为我所做的每个项目创建一个新的列百分比:- 选择项目,(totalAmount/select sum(totalAmount) from table1)作为百分比 从表 1 按项目分组
Col1 item TotalAmount percentage
1 ABC 5558767.82 38
2 ABC 4747605.5 32
3 ABC 667377.69 5
4 ABC 3844204 26
6 CTB 100 17
7 CTB 500.52 83
现在,复杂的部分我必须通过将此百分比乘以另一个表中的金额来计算另一个金额,例如 table2 ii) 通过将表 1 的总金额列拆分为 2 行来更新总金额列 - 新计算 PledgeAmount 的第一行和第二行 - (totalAmount - PledgeAmount)
*选择 t1.percentage * t2.new amount 作为 [PledgeAmount] 从表 1 join table2 where t1.item=t2.item*
。例如对于 col1 5558767.82 的数量将分成两行。 最终结果示例:-
Col1 item TotalAmount Type
1 ABC 363700.00 Pledge
1 ABC 5195067.82 Unpledge
....
我正在使用临时表进行计算。 我认为的一种方法是将 Pledged 和 Unpledged 的金额计算为新列并将其 Pivot,但它的巨大表包含数百列,它不会快速执行。
还有其他有效的方法吗?
【问题讨论】:
-
"但是它的巨大的表有数百列" -- 列?真的吗? - 但是是什么让您不能简单地使用临时表来存储每件商品的总金额。从那里开始应该很容易。
-
这 3 列只是巨大表格的一部分。我已经在 Temp 表中保留了每个项目的总金额值。抱歉,我不太擅长解释 :( 我计算了百分比,而是通过将新百分比乘以 tabl2 和 row2 作为差异来将总金额分成行的部分。
标签: sql tsql sql-server-2012