好的,我有一个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)
也许这样的事情会起作用:
$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并将负数转换为正数.注:false在select()从自动转义的字段声明停止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)
| 归档时间: |
|
| 查看次数: |
4244 次 |
| 最近记录: |