我有一个表格,其中包含所有日期的所有项目值。表名是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数据库 请告诉我获得此结果的过程
答案 0 :(得分:1)
您可以将条件聚合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
答案 1 :(得分:0)
试试这个:
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`