将查询结果映射到仅在一个数字下聚合

问题描述 投票:0回答:1

我有一个非常基本的脚本使用基本查询返回结果行并将它们成功打印到excel工作表

    //Create and run query
    $sql = "
    SELECT Manager, count(*) as Items
      from itemCount
    where start_date >= '2019-01-01'
    group by Manager
    order by Manager";

    $result = odbc_exec($DB2Conn, $sql);

    $phpExcel = new PHPExcel;
    $sheet = $phpExcel->getActiveSheet();
    $sheet ->setTitle("Management Numbers");
    $sheet ->getColumnDimension('A') -> setAutoSize(true);
    $sheet ->getColumnDimension('B') -> setAutoSize(true);



    //Create header row
    $sheet->setCellValue('A1', 'Manager');
    $sheet->setCellValue('B1', 'Items');

    $rowCount = 2;

    while($row = odbc_fetch_array($result)){
        var_dump($row);
        $sheet->setCellValue('A'.$rowCount, $row['Manager']);
        $sheet->setCellValue('B'.$rowCount, $row['Items']);

        $rowCount++;
    }

    $writer = PHPExcel_IOFactory::createWriter($phpExcel, "Excel2007");
    $writer->save('Management Numbers.xlsx');

这是问题所在:

查询当前以此格式返回正确的行:

Manager  |  Items
-----------------
12           5
13           2
16           3
11           7
18           4
19           8
22           1
21           7
32           4
53           3
25           5
75           2

但是每个经理都会向某个部门报告,我想对其进行映射,以便我可以硬编码并将经理分配给部门。

如何使用数组将管理器分配给类似的部门

 1=>12,13,16 
 2=>11,18,19,22,21
 3=>32,53,25,75

因此,我得到的电子表格中只包含部门编号和已分配经理的汇总编号,如下所示:

Manager  |  Items
------------------
1           41
2           91
3           185
php sql arrays phpexcel
1个回答
2
投票

对于具有指定部门的经理,您可以创建一个类似的数组

$manager_array['manager_id'][]='department_id';

$manager_array['1'][]=12;
$manager_array['1'][]=13;
$manager_array['1'][]=16;

要么

$manager_array['1']=array(12,13,16);

为了获得每个部门的经理数量,请计算$ manager_array ['manager_id']

count($manager_array[1]);

您还可以使用department_id列扩展itemCount表(如果可能)。

© www.soinside.com 2019 - 2024. All rights reserved.