将所有值相加,忽略减号

Noa*_*ich 1 mysql codeigniter

好的,我有一个mySQL值表.有些是积极的,有些是消极的.负面的人在桌子上面对他们.我正在使用Codeigniter.

我需要将它们全部加在一起,但是在负值之前,IGNORE.我只想总结数字,而不是将它们作为负数.

例如,这就是它目前的作用:-55 + -20 = 35

但我想要它做的是:-55 + -20 = 75

基本上我只想对值进行求和,而不管它们的正面或负面类型.

我怎样才能做到这一点?这是我的查询:

$this->db->select_sum('vat')
     ->from('accounts')->where_in('type', 'Expenses')
     ->where('date <=', $current_period)
     ->where('date >=', $previous_period);
Run Code Online (Sandbox Code Playgroud)

new*_*rey 5

也许这样的事情会起作用:

$this->db->select('SUM(CASE WHEN vat >= 0 THEN vat ELSE -vat END) AS sum', false)->from('accounts')->where_in('type', 'Expenses')->where('date <=', $current_period)->where('date >=', $previous_period);
Run Code Online (Sandbox Code Playgroud)

这应该保持正数正数vat并将负数转换为正数.注:falseselect()从自动转义的字段声明停止CI.

另外,从@shubhansh的评论中获取,您可以使用MySQL的ABS()方法来获取绝对值而不是CASE:

$this->db->select('SUM(ABS(vat)) AS sum', false)->from('accounts')->where_in('type', 'Expenses')->where('date <=', $current_period)->where('date >=', $previous_period);
Run Code Online (Sandbox Code Playgroud)