0

クエリから合計などを合計するテーブルを生成しようとしましたが、機能させるのに問題があります。

私はこのコードを持っています:

    <?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サーバーのバージョンに対応するマニュアルで、「Open」の近くで使用する正しい構文を確認してください。THEN1 ELSE 0 END)AS'Outstanding Cases'、SUM(CASE WHEN Outcome ='at line 1

そして、私がどこで間違っているのかを見つけることができません。

これに加えて、更新されたケースから割り当てられたケースの合計への更新'変換'%が必要になります。私は試した

$Conversion = $Renewed/$Total;

しかし、おそらく上記の元のエラーのために、それはそれほど遠くにはなりませんでした。また、パーセンテージの最も近い整数に丸める必要があります。つまり、(95.67868786%は96%に等しくなります)。

これを機能させる方法が本当にわからないので、助けていただければ幸いです。よろしくお願いします。

4

1 に答える 1

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'];

于 2012-10-08T14:02:18.197 に答える