2013-09-24 22 views
15

'da birden çok WHEN koşulunu birleştirmek Aşağıdaki CASE deyimini kullanarak 2 satırlık sonuçları 1'e birleştirmeye çalışıyorum. 12 < 26 ’yalnızca bir kez görünmeli ve sonuçlar birleştirilmelidir.MySQL - CASE

SELECT 
    CASE org.size 
     WHEN 0 THEN '<26' 
     WHEN 1 THEN '<26' 
     WHEN 2 THEN '26-50' 
     WHEN 3 THEN '51-100' 
     WHEN 4 THEN '101-250' 
     WHEN 5 THEN '251-500' 
     WHEN 6 THEN '501-1000' 
     WHEN 7 THEN '1001-5000' 
     ELSE '5000+' END 
     AS 'Size', 
     COUNT(DISTINCT org.id) AS '# of Companies' 
FROM org INNER JOIN usr ON usr.orgid = org.id 
    INNER JOIN usr_role ON usr.id = usr_role.usrid 
WHERE org.deleted = 0 AND usr.brnd = 1 AND usr_role.role = 1 
GROUP BY org.size; 
+0

Sen basit bir değişiklik 'gibi 'Size''' As' OrgSize'' ve OrgSize – MrSimpleMind

cevap

38

buna ne dersiniz?

SELECT CASE 
      WHEN org.size IN (0, 1) THEN '<26' 
      WHEN org.size = 2 THEN '26-50' 
      WHEN org.size = 3 THEN '51-100' 
      WHEN org.size = 4 THEN '101-250' 
      WHEN org.size = 5 THEN '251-500' 
      WHEN org.size = 6 THEN '501-1000' 
      WHEN org.size = 7 THEN '1001-5000' 
     ELSE '5000+' END AS Size, .... 

sorun

başlangıçta 0 ve 1 çünkü iki farklı gruptan en <26 neden kayıtları org.size gruplandırma olmasıdır.

Bu çalışacak,

GROUP BY CASE 
      WHEN org.size IN (0, 1) THEN '<26' 
      WHEN org.size = 2 THEN '26-50' 
      WHEN org.size = 3 THEN '51-100' 
      WHEN org.size = 4 THEN '101-250' 
      WHEN org.size = 5 THEN '251-500' 
      WHEN org.size = 6 THEN '501-1000' 
      WHEN org.size = 7 THEN '1001-5000' 
     ELSE '5000+' END 
+0

İyi düşünce ile ardından grupta, ancak sonuçlar yine 2 ayrı satırlara gösterebilirim her ikisi de '<26' – Ken

+0

ile bana sorgunuzun sonucunu gösterebilir misin? –

+0

Sonuç Kümesi (9 items) Beden ---------- # Firma Sayısı <26 ---------- 17 <26 ---------- 87 26-50 -------- 15 51-100 -------- 13 101-250 ------- 12 251-500 ------- 8 501-1000 ------ 5 1001-5000 ----- 6 5000+ ---------- 5 – Ken