您可以使用SUM(CASE语句获得它:
drop table if exists sandiklar;
create table if not exists sandiklar(tur text, EVET int, HAYIR int, BOS int, GECERSIZ int);
insert into sandiklar values
('MM', 100, 220, 310, 410),
('MM', 110, 230, 320, 420),
('MM', 120, 230, 360, 450),
('M', 110, 210, 370, 420),
('M', 140, 250, 320, 470),
('M', 120, 250, 330, 430),
('MB', 110, 260, 310, 490),
('MB', 150, 210, 310, 430),
('MB', 130, 210, 310, 430);
SELECT SUM(CASE WHEN TUR = 'MM' THEN EVET ELSE 0 END) as EvetMM,
SUM(CASE WHEN TUR = 'MM' THEN HAYIR ELSE 0 END) as HayirMM,
SUM(CASE WHEN TUR = 'MM' THEN BOS ELSE 0 END) as EvetMM,
SUM(CASE WHEN TUR = 'MM' THEN GECERSIZ ELSE 0 END) as GecersizMM,
SUM(CASE WHEN TUR = 'M' THEN EVET ELSE 0 END) as EvetM,
SUM(CASE WHEN TUR = 'M' THEN HAYIR ELSE 0 END) as HayirM,
SUM(CASE WHEN TUR = 'M' THEN BOS ELSE 0 END) as EvetM,
SUM(CASE WHEN TUR = 'M' THEN GECERSIZ ELSE 0 END) as GecersizM,
SUM(CASE WHEN TUR = 'MB' THEN EVET ELSE 0 END) as EvetMB,
SUM(CASE WHEN TUR = 'MB' THEN HAYIR ELSE 0 END) as HayirMB,
SUM(CASE WHEN TUR = 'MB' THEN BOS ELSE 0 END) as EvetMB,
SUM(CASE WHEN TUR = 'MB' THEN GECERSIZ ELSE 0 END) as GecersizMB
FROM sandiklar
WHERE TUR IN ('MM','M','MB');
drop table if exists sandiklar;
| EvetMM | HayirMM | EvetMM | GecersizMM | EvetM | HayirM | EvetM | GecersizM | EvetMB | HayirMB | EvetMB | GecersizMB |
|-------:|--------:|--------|------------|--------|---------|--------|------------|--------|---------|--------|------------|
| 330 | 680 | 990 | 1280 | 370 | 710 | 1020 | 1320 | 390 | 680 | 930 | 1350 |
我已经在这里建立了一个样本:。http://rextester.com/SIO50162
Woww那真快有我的多个选择任何性能差异查询和你的? – Martin
如果TUR有索引,你可以添加'WHERE TUR IN('MM','M','MB')' – McNets