我有一个python脚本,用户可以单击一个按钮以创建类型的列 数字 每次用户单击该按钮,都会创建两个列,例如: amt_day1,bal_up_to_day1.
llet说用户创建了以下列:amt_day1,bal_up_to_day1, amt_day2,bal_up_to_day2,amt_day3,bal_up_to_day3插入一些后,是预期结果的一个例子 数据:
name, amt_day1,bal_up_to_day1,amt_day2,bal_up_to_day2,amt_day3,bal_up_to_day3
John, 100, 100, 150, 250, 50, 300
我想要列bal_up_to_day1 = amt_day1; bal_up_to_day2 = bal_up_to_day1 + bal_up_to_day1 + amt_day2和bal_up_to_day3 = bal_up_to_day2 +amt_day3
因此,如果用户决定更新Munter_day1,我想要所有列 balance_up_to_day…将自动更新 应计余额如果用户想将列数量_DAY1的数量从100更改为400 约翰,我应该有结果:
name,amt_day1,bal_up_to_day1,amt_day2,bal_up_to_day2,amt_day3,bal_up_to_day3
John 400, 400, 150, 550, 50, 600
我阅读了有关触发和动态SQL的信息,但我仍然找不到一种方法。 欢迎任何解决方案。
我尝试更新AccrueD_ARNING SET BAL_UP_TO_DAY1 = AMT_DAY1;用户第一次点击。
对于其他时间,我尝试更新Accrued_Earning SET BAL_UP_TO_DAY2 = bal_up_to_day1 + amt_day1;
但应该更新bal_up_to_day ..列动态。
这是您桌子的高度非标准架构。 当用户在应用程序中采取操作时,需要创建新列的要求吗?
在SQL中,更喜欢维持数据之间的关系。 例如,您上面的示例可以由具有四列的表建模:用户,天,交易金额,平衡日期。
从那里,您可以使用选定的子查询来获取最新的“余额约会”,并使用它为您的用户创建新行。
例如:
INSERT INTO account_balances (user, day, amount, balance)
SELECT 'username',
1,
100,
COALESCE(SELECT balance
FROM account_balances
WHERE user = 'username'
ORDER BY day DESC
LIMIT 1
), 0) + 100;