mysql - 你会如何整理这份每日报告 Mysql 逻辑

标签 mysql

我正在显示每日基础数据。说一个人 (HumanID) 每天早上、晚上吃 2 次。所以我输入这样的数据。

表:报告

--------------------------------------
ID  | HumanID |  date      | schedule | amount|  
--------------------------------------
1  |  101     | 2016-01-01 | morning  |  10   |
2  |  101     | 2016-01-01 | evening  |  8    |
3  |  102     | 2016-01-01 | morning  |  11   |
4  |  102     | 2016-01-01 | evening  |  9    |
5  |  103     | 2016-01-01 | morning  |  8    |
6  |  103     | 2016-01-01 | evening  |  7    |

查询结果将是: 我要这样显示

---------------------------------------
HumanID |  date      | morning | evening |  
---------------------------------------
101     | 2016-01-01 |   10    |   8     |
102     | 2016-01-01 |   11    |   9     |
103     | 2016-01-01 |   8     |   7     |

最佳答案

这是一个数据透视查询。在 MySQL 中,您可以使用条件聚合来执行此操作:

select id, date,
       max(case when schedule = 'morning' then amount end) as morning,
       max(case when schedule = 'evening' then amount end) as evening
from t
group by id, date;

关于mysql - 你会如何整理这份每日报告 Mysql 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948809/

相关文章:

mysql - 根据MySQL中的两列查找最小值

mysql - 如何获取该行中某一列的值在该表中出现超过100次的行

mysql - SQL 模式创建(头脑 Storm 有帮助吗?)

php - 如何找到重叠的日期范围之间的其余部分

php - 消息系统流入数据库

php - 从 SQL 表中获取文件列表,在 PHP 中显示并检查文件是否有效

mysql - 如何从键值对表中选择数据

javascript - Meteor.wrapAsync

php - 根据数据库值更改选择框值

mysql - 使用 rails where 查询另一个查询的结果