【问题标题】:mapping query results to be aggregated under only one number映射查询结果只聚合在一个数字下
【发布时间】:2019-02-24 13:01:39
【问题描述】:

我有一个非常基本的脚本,它使用基本查询返回结果行并将它们成功打印到 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】:

    对于分配部门的经理,您可以创建一个数组,如

    $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 表(如果可能)。

    【讨论】:

    • 谢谢,数组是有意义的。但是,一旦我构建了完整的映射数组,我该如何更改它当前写入 excel 的方式?只需将 $row 更改为 $manager_array?
    • 另外,可能存在误解,但我不想统计每个部门的经理,我想汇总该部门每个经理的项目。我上面的查询返回经理 ID 和每个经理的项目数,所以如果 3 个经理被分配到一个部门,我想要所有经理项目的总和
    • 你的 sql 表中部门与经理之间是否有任何关系?我不知道这些数据是如何存储的和是什么样子的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2012-08-05
    • 1970-01-01
    • 2014-10-22
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多