2013-02-07 142 views
4

我有一个查询需要对其他2列为真的列进行计数。 当'DealerName'像'%MINI%'和'DealerContact_Y'= 1时,我需要计算'DealerName''mysql'case'具有多个'WHEN'值

但我不确定语法。此查询产生错误

SELECT DealerName, 
     count(DealerShipId) as dealersContacted, 
     CASE WHEN 
     DealerName LIKE "%MINI%", WHEN DealerContact_Y = 1 
     THEN Count(DealerContact_Y) END as Mini_contacted_yes, 
     Campaign, 
     DealerId 
     FROM tblsummaryResults 

是否有办法在case语句中执行多个WHENS?

回答

4

你会使用DealerName LIKE '%MINI%' AND DealerContact_Y = 1这样写:

SELECT DealerName, 
    count(DealerShipId) as dealersContacted, 
    count(CASE 
      WHEN DealerName LIKE '%MINI%' 
       AND DealerContact_Y = 1 
      THEN DealerContact_Y END) as Mini_contacted_yes, 
    Campaign, 
    DealerId 
FROM tblsummaryResults 
+0

非常感谢,这似乎是工作,我会接受的答案系统允许的时候。 – user1882752

+0

@ user1882752欢迎您,我很高兴它正在工作。 – Taryn

1

所以,做这样的计数:

COUNT(
    IF(DealerName LIKE "%MINI%" AND DealerContact_Y = 1, DealerContact_Y, NULL) 
) AS Mini_contacted_yes 
+0

谢谢这也可以! – user1882752