0

私は現在、mssqlサーバー上のストアドプロシージャから情報を取得する以下の関数を持っています。

チームが同じである場合、すべてのユーザーターゲットを合計するループを作成しようとしています。私は通常、単純なグループと合計を使用してmysqlでこれを行いますが、ここでは失われます。

初心者のphperの助けをいただければ幸いです。

function getSalesPersonTargetTracker()
{
$targetTracker = new StdClass();
$targetTracker->agents = array();

$connection = sqlsrv_connect($server, $connectioninfo);

$query = "{call salespersontargettracker (?)}";
$params = array(
                 date_format(new DateTime(), '01/M/Y')
            );

//Run the Query             
$statement = sqlsrv_query($connection, $query, $params);

if (sqlsrv_fetch($statement) === false)
     print_r( sqlsrv_errors(), true);

//Read in the overall numbers
$targetTracker->target = (float)sqlsrv_get_field($statement, 0);
$targetTracker->workingDays = (int)sqlsrv_get_field($statement, 1);
$targetTracker->currentDay = (int)sqlsrv_get_field($statement, 2);
$targetTracker->dailyTarget = (float)sqlsrv_get_field($statement, 3);
$targetTracker->pointsShouldBeOn = (float)sqlsrv_get_field($statement, 4);
$targetTracker->pointsOn = (float)sqlsrv_get_field($statement, 5);
$targetTracker->pointsDifference = (float)sqlsrv_get_field($statement, 6);
$targetTracker->moneyShouldBeOn = (float)sqlsrv_get_field($statement, 7);
$targetTracker->moneyOn = (float)sqlsrv_get_field($statement, 8);
$targetTracker->moneyDifference = (float)sqlsrv_get_field($statement, 9);

//Move to the next result
sqlsrv_next_result($statement);

//Run through all of the agents and show their details
while (sqlsrv_fetch($statement))
{
    $salesPerson = new StdClass();
    $salesPerson->team = sqlsrv_get_field($statement, 0);
    $salesPerson->username = strtolower(sqlsrv_get_field($statement, 1));
    $salesPerson->target = (float)sqlsrv_get_field($statement, 2);
    $salesPerson->workingDays = (int)sqlsrv_get_field($statement, 3);
    $salesPerson->currentDay = (int)sqlsrv_get_field($statement, 4);
    $salesPerson->dailyTarget = (float)sqlsrv_get_field($statement, 5);
    $salesPerson->pointsShouldBeOn = (float)sqlsrv_get_field($statement, 6);
    $salesPerson->pointsOn = (float)sqlsrv_get_field($statement, 7);
    $salesPerson->pointsDifference = (float)sqlsrv_get_field($statement, 8);
    $salesPerson->moneyShouldBeOn = (float)sqlsrv_get_field($statement, 9);
    $salesPerson->moneyOn = (float)sqlsrv_get_field($statement, 10);
    $salesPerson->moneyDifference = (float)sqlsrv_get_field($statement, 11);

    //Add this person to the people list
    $targetTracker->agents[$salesPerson->moneyOn] = $salesPerson;
    krsort($targetTracker->agents);
}

return $targetTracker;
}

 $targetTrackerall = getSalesPersonTargetTracker();
4

1 に答える 1

0

2 番目のループ内で、このコードを最後に追加できます。

if (!isset($sums[$salesPerson->team])) {
    $sums[$salesPerson->team] = 0;
}
$sums[$salesPerson->team] += $salesPerson->target;

チームをキーとして配列を作成し、そのチーム内のすべてのターゲットの合計を作成します。ループの終了後、 の値を使用できます$sums

それでもうまくいかない場合は、親切に の値を教えてくださいvar_dump($sums)

于 2012-10-03T09:51:30.820 に答える