2013-09-24 46 views
15

我試圖使用下面的CASE子句將2行結果合併爲1。 '< 26'應該只出現一次,結果應該合併。MySQL - 結合CASE中的多個WHEN條件

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

你可以簡單的改變了'至於「Size''爲'作爲」 OrgSize'',然後OrgSize – MrSimpleMind

回答

38

這個怎麼樣?

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, .... 

的問題是,你是分組記錄org.size在兩個不同的羣體造成<26因爲它們本來01

這將工作,

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

沒想好組,但結果仍然顯示2個獨立的行兩者的大小'<26' – Ken

+0

你能告訴我你的查詢結果嗎? –

+0

結果集(9件物品) 尺寸----------公司數量 <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