推荐使用 if 的语句:
if(想变成行的列名 = ‘列的值’,另一个列名) ‘给这个字段取别名’
建表语句
create table test (Date varchar(10), item char(10),saleqty int);
insert test values('2010-01-01','AAA',8);
insert test values('2010-01-02','AAA',4);
insert test values('2010-01-03','AAA',5);
insert test values('2010-01-01','BBB',1);
insert test values('2010-01-02','CCC',2);
insert test values('2010-01-03','DDD',6);
SELECT * ,
case item when 'AAA' THEN saleqty ELSE 0 end as A,
case item when 'BBB' THEN saleqty ELSE 0 end as B,
case item when 'CCC' THEN saleqty ELSE 0 end as C
FROM TEST
select *,
if(item = 'AAA',saleqty,0) 'A',
if(item = 'BBB',saleqty,0) 'B',
if(item = 'CCC',saleqty,0) 'C'
FROM TEST
select *,
max(if(item = 'AAA',saleqty,0)) 'A',
max(if(item = 'BBB',saleqty,0) )'B',
max(if(item = 'CCC',saleqty,0) )'C'
FROM TEST