SELECT
a1.CID AS CID,
a1.DATAID AS DATAID,
(
select  CASE
WHEN (
sum(
(
CASE
WHEN (a2.CALLRESULT = 1) THEN
1
ELSE
0
END
)
) > 0
) THEN
1
ELSE
0
END from sys_agent_cdr a2 where a1.CALLID = a2.CALLID
) AS CALLSUCC_FLAG
FROM sys_customer_record a1GROUP BY
a1.DATAID

解决方案 »

  1.   

    SELECT a1.CID AS CID,
           a1.DATAID AS DATAID,
           (select if(count(*) > 0, 1, 0)
              from sys_agent_cdr a2
             where a1.CALLID = a2.CALLID
               and a2.CALLRESULT = 1) AS CALLSUCC_FLAG
      FROM sys_customer_record a1
     GROUP BY a1.DATAID
      

  2.   

    SELECT a1.CID AS CID,
           a1.DATAID AS DATAID,
           (select count(*)
              from (select *
                      from sys_agent_cdr a2
                     where a1.CALLID = a2.CALLID
                       and a2.CALLRESULT = 1 limit 1)) AS CALLSUCC_FLAG
      FROM sys_customer_record a1
     GROUP BY a1.DATAID
      

  3.   

    http://blog.csdn.net/baidu_23174957
      

  4.   

    贴出 
    explain SELECT
    a1.CID AS CID,
    a1.DATAID AS DATAID,
    (
    select  CASE
    WHEN (
    sum(
    (
    CASE
    WHEN (a2.CALLRESULT = 1) THEN
    1
    ELSE
    0
    END
    )
    ) > 0
    ) THEN
    1
    ELSE
    0
    END from sys_agent_cdr a2 where a1.CALLID = a2.CALLID
    ) AS CALLSUCC_FLAG
    FROM sys_customer_record a1GROUP BY
    a1.DATAID
    以供分析。