我有一个表,其中包含所有日期的所有项的值。表名为item_data
╔═════════╦═══════╦═════════════╗
║ item_id ║ value ║ report_date ║
╠═════════╬═══════╬═════════════╣
║ 101 ║ 50 ║ 2014-10-11 ║
║ 102 ║ 50 ║ 2014-10-11 ║
║ 101 ║ 100 ║ 2014-10-12 ║
║ 102 ║ 11 ║ 2014-10-12 ║
╚═════════╩═══════╩═════════════╝还有另一个包含项目名称的表名是page_items
╔═════════╦═══════════╗
║ item_id ║ item_name ║
╠═════════╬═══════════╣
║ 101 ║ sprite ║
║ 102 ║ egg ║
╚═════════╩═══════════╝我的要求是,我想按以下方式显示值
╔═════════════╦════════╦═════╗
║ report_date ║ sprite ║ egg ║
╠═════════════╬════════╬═════╣
║ 2014-10-11 ║ 50 ║ 50 ║
║ 2014-10-12 ║ 100 ║ 11 ║
╚═════════════╩════════╩═════╝有谁能帮我使用mysql数据库吗?请告诉我得到这个结果的过程。
发布于 2014-12-30 04:39:57
可以将条件聚合max与case结合使用,按日期分组:
select report_date,
max(case when item_id = 101 then value end) sprite,
max(case when item_id = 102 then value end) egg
from item_data
group by report_date发布于 2014-12-30 06:25:30
试试这个:
select ID.`report_date`,
case (when PI.`item_id` = 101 then PI.`value` end) AS sprite,
(when PI.`item_id` = 102 then PI.`value` end) AS egg
from item_data ID
JOIN page_items PI (ON PI.`item_id` = ID.`item_id`)
group by ID.`report_date`https://stackoverflow.com/questions/27699625
复制相似问题