在SQLite android上触发两列的总和

时间:2014-11-12 22:45:34

标签: android sqlite android-sqlite triggers

正如标题所说,我正在尝试根据同一个表中两列的总和设置一个列值,我的意思是,我在一个表上有一行,我有一些属性“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>

非常感谢你阅读,我真的感谢你们给我的任何帮助。

1 个答案:

答案 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语句中计算结果集时,您可能必须计算中间临时数据/变量,可能是通过临时表/游标等,但这是应该做的最后一件事。我们有时仍然无法避免