0

Resolved、Re-assigned、Closed という名前の 3 つの列に COUNT の結果をエコーするにはどうすればよいですか?

解決済み、再割り当て済み、クローズ済みのチケットの数をカウントし、それらを対応する列に配置したいと考えています。また、各列と行の合計を合計する必要があります。

これは、重大度、カテゴリ 2、カテゴリ 3、およびステータスを介してアップロードされる発券システムです。

下の画像では、レポートは各列に一意の値で生成されます。したがって、重大度 5 の場合、カテゴリ 2 の下に 2 つのエントリがあり、カテゴリ 2 ごとにカテゴリ 3 の下に異なるエントリがあり、解決されたチケットの数を表示したいと思います。 、カテゴリ 3 の各エントリの再割り当ておよびクローズ。たとえば、重大度 5 の SMP_Backend には保留中の要求があり、カテゴリ 3 の他のエントリがあるため、保留中の注文については、解決済み 3 と再割り当て済み 2 があるとしましょう。保留中のリクエスト行の解決済みおよび再割り当て済みの列の下にある数値と、行ごとおよび列ごとの合計も表示したい...

ここに画像があります:

ここに画像の説明を入力

ここに私のコードがあります:

    <?php
require 'include/DB_Open.php';

$dates = $_POST['dates'];

$sql ="SELECT trouble_type_priority as `Severity`
    , category_1
    , category_2
    , SUM(IF(status='Resolved', 1, NULL)) as `Resolved`
    , SUM(IF(status='Re-assigned', 1, NULL)) as `Re-assigned`
    , SUM(IF(status IN ('Closed','Suspended'), 1, NULL)) as `Closed`
    , COUNT(status) as `Total`
    FROM tbl_main
    WHERE resolved_date = '$dates'
    GROUP BY Severity, category_1, category_2";

$myData = mysql_query($sql)or die(mysql_error());

$output = 
"<tr>
    <th colspan='3' align='center'>Ticket Bucket</th>
    <th colspan='3' align='center'>Status</th>
</tr>
<tr>
    <th width='auto' align='center'>Severity</th>
    <th width='auto' align='center'>Category 2</th>
    <th width='auto' align='center'>Category 3</th>
    <th width='auto' align='center'>Resolved</th>
    <th width='auto' align='center'>Re-assigned</th>
    <th width='auto' align='center'>Closed</th>
    <th width='auto' align='center'>Grand Total</th>
</tr>\n";
$prev1 = $prev2 = $prev3 = '';
while (list($trouble_type_priority,$category_1,$category_2) = mysql_fetch_array($myData)) {

    if ($trouble_type_priority != $prev1) {
        $prCat1 = $trouble_type_priority;
        $prCat2 = $category_1;
        $prCat3 = $category_2;
        $prev1 = $trouble_type_priority; 
        $prev2 = $category_1;
        $prev3 = $category_2;
    }
    elseif ($category_1 != $prev2) {
        $prCat1 = '&nbsp';
        $prCat2 = $category_1;
        $prCat3 = $category_2;
        $prev2 = $category_1;
        $prev3 = $category_2;
    }
    elseif ($category_2 != $prev3) {
        $prCat1 = '&nbsp';
        $prCat2 = '&nbsp;';
        $prCat3 = $category_2;
        $prev3 = $category_2;
    }
    else $prCat1 = $prCat2 = $prCat3 = '&nbsp;';
    $output .= "<tr><td>$prCat1</td><td>$prCat2</td><td>$prCat3</td></tr>\n";
}
?>
<html>
<head>
<meta name="generator" content="PhpED Version 8.1 (Build 8115)">
<title>Example</title>
<meta name="author" content="Barand">
<meta name="creation-date" content="05/04/2013">
</head>
<body>
    <table border="0" cellpadding="1" >
    <tr>
    <th>Team Report</th>
    </tr>
    </table>
    <table border="0" cellpadding="1" >
    <tr>
    <th colspan='2'>Remaining Tickets:</th>
    </tr>
    <tr>
    <th width='72'>Wireless:</th>
    <th><input type='text' name='WirelessRemaining' id='WirelessRemaining' size='5' align='middle' /></th>
    </tr>
    <tr>
    <th>Wireline:</th>
    <th><input type='text' name='WirelineRemaining' id='WirelineRemaining' size='5' align='middle' /></th>
    </tr>
    </table>
    <table border="1" cellpadding="2">
        <?php echo $output?>
    </table>
    </table>
    <table border="1" cellpadding="1">
    <tr>
    <td width="34" style="display:none">&nbsp;</td>
    <td width="68" style="display:none">&nbsp;</td>
    <td width="144" style="display:none">&nbsp;</td>
    <td width="56" style="display:none">&nbsp;</td>
    <td width="34" style="display:none">&nbsp;</td>
    <td width="93" style="display:none">&nbsp;</td>
    <td width="107" style="display:none">&nbsp;</td>
    </tr>
    <tr>
    <td colspan="6" align="center">Total</td>
    <td align="left">&nbsp;</td>
    </tr>
    </table>
</body>
</html>
4

1 に答える 1

0

求めているものは、ピボットクエリと呼ばれます。PIVOTDBMS によっては、演算子またはCASEステートメントを使用して実行できます。このようなもの:

select id, resolved, closed, resolved + closed as total
from (
    select   id
           , max(case type when 'R' then Q else 0 end) as resolved
           , max(case type when 'C' then Q else 0 end) as closed
    from (
       select id, type, count(type) as Q
       from cases 
       group by id, type
    ) as A
) as B
于 2013-05-06T04:34:50.997 に答える