2013-09-24 36 views
15

Tôi đang cố gắng kết hợp 2 hàng kết quả thành 1 bằng mệnh đề CASE bên dưới. ‘< 26’ chỉ xuất hiện một lần và kết quả sẽ được kết hợp.MySQL - Kết hợp nhiều điều kiện WHEN trong 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

Bạn có thể thay đổi đơn giản các 'Như 'Size'' cho 'Như' OrgSize'', và sau đó nhóm bởi OrgSize – MrSimpleMind

Trả lời

38

thì sao?

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

Vấn đề là bạn đang nhóm các hồ sơ org.size gây <26 ở hai nhóm khác nhau vì chúng là ban đầu 01.

này sẽ làm việc,

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

tốt tư tưởng, nhưng kết quả vẫn hiển thị 2 hàng riêng biệt cả hai với kích thước '<26' – Ken

+0

bạn có thể chỉ cho tôi kết quả truy vấn của bạn không? –

+0

Tập kết quả (9 mục) Kích thước ---------- Số công ty <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

Các vấn đề liên quan