2017-04-09 15 views
1

私の動作するクエリは;複数選択クエリ(複数の場合)MySQLの条件

SELECT SUM(EVET) as Evet, 
     SUM(HAYIR) as Hayir, 
     SUM(BOS) as Evet, 
     SUM(GECERSIZ) as Gecersiz 
FROM sandiklar 
WHERE TUR = 'MM' 

UNION 

SELECT SUM(EVET), 
     SUM(HAYIR), 
     SUM(BOS), 
     SUM(GECERSIZ) 
FROM sandiklar 
WHERE TUR = 'M' 

UNION 

SELECT SUM(EVET), 
     SUM(HAYIR)r, 
     SUM(BOS), 
     SUM(GECERSIZ) 
FROM sandiklar 
WHERE TUR = 'MB' 

出力は次のようになります。私の質問がある

enter image description here

。 Where条件に従って、3つの行すべてが12行のclumnsとname clumnを持つ1つの行になるように、その問合せを作成できますか。

mmEvet mmHayir mmBos mmgecersiz mEvet mHayir mBos mgecersiz mbEvet mbHayir mbBos mbgecersiz

これは、1つの行であろう。

答えて

1

あなたはそれが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

+0

Wowwのthatsは本当に速い私の複数選択で任意のパフォーマンスの差がありますクエリとあなたのもの? – Martin

+0

TURにインデックスがある場合は、 'WHERE TUR IN( 'MM'、 'M'、 'MB')'を追加できます – McNets

関連する問題