sql - 根据其他列值减去不同的行值
问题描述
我正在尝试做与这个问题几乎相同的事情,但是在尝试将其更改为我的情况后,我似乎无法产生我的目标。
id, type, time, amount
------------
18, depo, 2020-02-02 10:13:00, 30
17, full, 2020-02-02 10:12:00, 100
16, full, 2020-02-01 15:12:00, 100
15, full, 2020-02-01 13:12:00, 100
我只需要按日期对所有分组进行 SUM(),我已经做到了。
SELECT sum(amount) amount, DATE(time) day
FROM `payment`
GROUP BY DATE(time), type
ORDER BY day, type DESC
它返回两个相同的日期
70, 2020-02-02
100, 2020-02-02
200, 2020-02-01
我需要的操作是完全减去 (-) depo 所以在 2020-02-02 我将得到 70。与其他日期相同。我正在考虑将所有数据分配给 PHP 数组,但是否有“更简单”的解决方法,所以我可以直接从查询中调用数据。
提前致谢。
解决方案
case..when
您可以在聚合中使用条件(子句):
SELECT sum(case when type = 'depo' then - amount else amount end) amount, DATE(time) day
FROM `payment`
GROUP BY DATE(time), type
ORDER BY day, type DESC
推荐阅读
- python - 如何使用长度 python Faker 包生成假名
- xamarin - 如何使用关联的视图模型以编程方式将选项卡添加到选项卡页面?
- java - Gmail API - 从需要的新邮件中下载附件 SCOPES - JAVA
- arrays - 如何在 ruby 中获取特定的数组索引?
- python - Jupyter Notebook:'head' 未被识别为内部或外部命令、可运行程序或批处理文件
- python - 在 Python 中的函数定义下方放置一个字符串
- java - 按每个字符类的自定义规则对字符串数组进行排序
- javascript - 协议依赖停止正在运行的测试
- python - 运行 hyperopt fmin 函数时出错(TypeError: cannot convert dictionary update sequence element #0 to a sequence)
- javascript - 如何在 React 中修复 Typescript 类型检查错误