2012-10-08 36 views
0

试图从查询中生成表总计等,但无法使其工作。计数和求和总计php/mysql查询

我有这样的代码:

<?php 

    $assigned = $_POST['Sales_Exec']; 
    $date = $_POST['DateSelect']; 
    $Renewed = "SUM(CASE WHEN Outcome = 'Renewed' THEN 1 ELSE 0 END) AS 'Renewed <br/> Cases'"; 
    $Lapsed = "SUM(CASE WHEN Outcome = 'Lapsed' THEN 1 ELSE 0 END) AS 'Lapsed <br/> Cases'"; 
    $Open = "SUM(CASE WHEN Outcome = 'Open' THEN 1 ELSE 0 END) AS 'Outstanding <br/> Cases'"; 
    $Total = "SELECT COUNT(Assigned) as 'Total <br/> Assigned"; 


    echo GenerateTable("SELECT COUNT(Assigned) as 'Total <br/> Assigned, $Open, $Renewed, $Lapsed FROM Data WHERE Assigned = '$assigned' "); 

?> 

,并正在此错误:

MySQL错误:您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在正确的语法附近使用'开放'那么1'ELSE 0结束)作为'突出的 个案',SUM(CASE当结果='在线1

并且' t点焊,我要去哪里错了。

除此之外,我将根据需要关闭的情况下再次续签“转换”%,总计分配的情况下,我试着

$Conversion = $Renewed/$Total; 

但没有达到那么远,可能是因为上面的原始错误,我还需要将该数字四舍五入到最接近的整数,例如( 95.67868786%等于96%)。

真的不知道如何得到这个工作,所以任何帮助将不胜感激,谢谢你提前!

回答

2

你错过了一个单引号(Total <br /> Assigned后):

GenerateTable("SELECT COUNT(Assigned) as 'Total <br/> Assigned', $Open, $Renewed, $Lapsed FROM Data WHERE Assigned = '$assigned' ");

至于百分比,你可能想要做的是,在PHP中,这将是在这种情况下,最简单的解决方案。所以,如果你有你的结果集中的行,你可以这样做:

$Conversion = $row['Renewed <br/> Cases]/$row['Total <br/> Assigned'];

+0

优秀,感谢察觉这,这是整理的那部分,对于转化率有什么建议?在那一刻我得到一个由零分区错误。 –

+0

这意味着'$ row ['Total
Assigned']'的值为零,所以这意味着'COUNT(Assigned)'为零 –