正如标题所说,我正在尝试根据同一个表中两列的总和设置一个列值,我的意思是,我在一个表上有一行,我有一些属性“capital,income,mat_expense ,other_expense,net_profit“我每次出售新产品或注册一些付款时都会更新此行,当我销售新产品时,我会在注册mat_expense时更新”收入“属性并添加销售价格(原材料)费用)我将更新attribut添加新的费用价格与other_expense相同的行动,我的观点是我想计算我卖的net_profit,如果我卖20美元我在原材料上花10美元,我想要我的net_profit属性每次我更新表时都做同样的操作,我想用“大写”属性做同样的事情(收入 - (mat_expense + other_expense),这基本上就是我需要做的事情,我去过阅读此操作应该通过sqlite上的“触发器”来完成,我一直在阅读一些帖子,但我没有得到如何适应我的情况,你们能帮我一个忙吗?例如:
| capital | income | mat_expense | other_expense | net_profit |
5 20 10 5 10
顺便说一句,这是一个咨询,有可能做一个触发器,使属性充当累加器?正如我之前解释的那样,我将升级一些属性,添加新值,每次我这样做,我需要查询当前值,将其保存在变量中然后我将新值相加,我认为它效率不高。< / p>
非常感谢你阅读,我真的感谢你们给我的任何帮助。
答案 0 :(得分:1)
在SQL中,您可以使用表达式来定义新列,即:
select
income,
mat_expense,
other_expense,
income - (mat_expense + other_expense) as capital
from your_table;
您将获得名为&#39; capital&#39;
的第4列至于第二个问题 - 你应该尽可能使用这样计算的虚拟列。表达式可能非常复杂,包括SQL函数,甚至包括子查询。例如,您可以添加与第一个表中当前行相关的其他表行中具有最小值的列。
通常,SQL语言是将源数据集转换为其他表示形式,将某些表转换为其他表。
当您无法在单个SQL语句中计算结果集时,您可能必须计算中间临时数据/变量,可能是通过临时表/游标等,但这是应该做的最后一件事。我们有时仍然无法避免