首页 > 解决方案 > 在 MySQL 中选择如下水平格式的结果

问题描述

我有一张这样的桌子。

像这样的卖方表:

像这样的卖家表

同一张表的代码是:

create table sellers (seller_id int, country varchar(30), Month varchar(30), Sales int);'''

insert into sellers values 
(1, 'I', 'January', 10000),
(1, 'I', 'Februray', 60000),
(1, 'I', 'March', 80000),
(2, 'In', 'january', 20000), 
(2, 'In', 'February', 10000),
(2, 'In', 'March', 10000), 
(3, 'Ind', 'january', 50000),
(3, 'Ind', 'March', 20000),
(3, 'Ind', 'February', 10000)
;

我想得到以下格式的结果

结果格式如下:

像这样的结果格式

我尝试了这样的 SQL 代码,但无法检索结果:

select seller_id, 
(select sales where month = 'January') as Jan_sales, 
(select sales where month = 'February') as Feb_sales, 
(select sales where month = 'March') as Mar_sales
from sellers group by seller_id;

标签: mysqlmysql-workbench

解决方案


你可以使用一个虚假的聚合函数

select country
  , max(if(month = 'January', sales, 0) Jan_sales
  , max(if(month = 'February', sales, 0) Feb_sales
  , max(if(month = 'March', sales, 0) Mar_sales
from sellers
group by country

推荐阅读