2013-09-24 21 views
15

Ich versuche, 2 Zeilen der Ergebnisse in 1 unter Verwendung der folgenden CASE-Klausel zu kombinieren. '< 26' sollte nur einmal erscheinen, und die Ergebnisse sollten kombiniert werden.MySQL - Kombinieren mehrerer WHEN-Bedingungen in 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

Sie könnten der 'So einfach ändern 'Size'' zu' As' OrgSize'', und dann die Gruppe von OrgSize – MrSimpleMind

Antwort

38

Wie wäre es damit?

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

Das Problem ist, dass Sie die Datensätze gruppieren org.size verursachen <26 bei zwei verschiedenen Gruppen, da sie ursprünglich 0 und 1 sind.

Dies funktioniert,

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

guter Gedanke, aber die Ergebnisse zeigen noch 2 separate Reihen beide mit der Größe '<26' – Ken

+0

können Sie mir das Ergebnis Ihrer Anfrage zeigen? –

+0

Result Set (9 Artikel) Größe ---------- # der Firmen <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