您可以使用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