你会如何整理这个日常报告Mysql逻辑

时间:2016-08-15 03:10:12

标签: mysql

我正在显示每日基础数据。 Say One Human(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     |

1 个答案:

答案 0 :(得分:1)

这是一个透视查询。在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;