我有一个使用基本查询的非常基本的脚本,该脚本返回结果行并将其成功打印到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
答案 0 :(得分: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);
要获得每个部门的经理人数,请像$ pd $ manager_array ['manager_id']
count($manager_array[1]);
您还可以使用department_id列扩展您的itemCount表(如果可能)。