我的数据库结构如下所示:
id | valuefor | quantity
1 alpha 500
2 alpha 100
3 beta 200
我正在使用以下mysql命令
SELECT IF(valuefor=alpha, SUM(quantity),0) as alpha
, IF(valuefor=beta, SUM(quantity),0) as beta
FROM mytable
当前输出:
alpha | beta
800 0
上面显而易见的问题是,由于我使用了SUM,所以它都是SUMS。我怎样才能克服这种困境?我想分别获得alpha和beta的数量。
其次,我很困惑为什么beta在输出中没有值= 800,为什么会说0。这只是为了让我更好地理解这个问题。
我希望结果如下:
alpha | beta
600 200
答案 0 :(得分:2)
试试这个:
SELECT SUM(CASE WHEN valuefor=alpha THEN quantity ELSE 0 END) AS alpha,
SUM(CASE WHEN valuefor=beta THEN quantity ELSE 0 END) AS beta
FROM mytable
答案 1 :(得分:1)
您可以像这样使用case
语句:
select
sum(case valuefor when 'alpha' then quantity else 0 end) as alpha,
sum(case valuefor when 'beta' then quantity else 0 end) as beta
from test;
示例:强>
http://sqlfiddle.com/#!9/f07bbf
create table test (
id int,
valuefor varchar(20),
quantity int
);
insert into test values
(1, 'alpha', 500),
(2, 'alpha', 100),
(3, 'beta', 200);
<强>结果强>
| alpha | beta |
|-------|------|
| 600 | 200 |