在Sql / php脚本中创建更具体的报告

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

我有一个非常密集的SQL查询在php脚本中运行,它基本上汇总了我们每个员工在电话上的数字,创建了一个CSV,然后通过PHP邮件程序将其附加到电子邮件中。

这工作正常,但我的任务是将其变成一份完整的报告(即excel报告,格式化等),每个员工的总数。现在它基本上只有每个员工的行项目,因此员工A可能有32个记录,然后它直接进入员工B.我需要更改它,以便在员工A的记录结束时,它插入一个总计值的行对于每一列。

我想我可能只是使用PHP来做这个,因为这是在PHP脚本中,但我不知道在这里做到这一点的最佳方法,我希望有一些指导,我可以应用于其余的查询。

我认为为字段/列创建一个变量可能会很好,这样我就可以用这种方式创建一个SUM,但是我对此很满意。

这是脚本的SQL部分:

$result = mysqli_query($conn2,
    "SELECT
        FirstN
        , LastN
        , Extension
        , Recieved
        , Recieved_Known
        , Outbound
        , Outbound_Known
        , Missed_No_VM
        , Missed_VM
        , Missed_Known
        , Calling_Number
        , Called_Number
        , Start_Time
        , End_Time
        , Talk_Time_Seconds
        , Hold_Time_Seconds

        FROM (
          SELECT distinct
           firstn
           , lastn
           , c.extension
           , CASE WHEN LEGTYPE1 = 2 AND ANSWERED = 1 THEN 'x' ELSE '' END AS Recieved
           , case when LEGTYPE1 = 2 and answered = 1 and CALLINGPARTYNO = k.phone_number then 'x' ELSE '' end as Recieved_Known
           , CASE WHEN LEGTYPE1 = 1 then 'x' ELSE '' end  AS Outbound
           , case when  FINALLYCALLEDPARTYNO = kn.long_number then 'x' ELSE '' end as Outbound_Known
           , case when legtype1 = 2 and answered = 0 and finallycalledpartyno  not like '%oice%' then 'x' ELSE '' end as Missed_No_VM
           , case when finallycalledpartyno like '%oice%' then 'x' ELSE '' end as Missed_VM
           , case when legtype1 = 2 and ANSWERED = 0 and CALLINGPARTYNO = k.phone_number then 'x' ELSE '' end as
            Missed_Known
           , a.CALLINGPARTYNO AS Calling_Number
           , a.FINALLYCALLEDPARTYNO AS Called_Number
           , b.starttime as Start_Time
           , b.endtime as End_Time
           , b.duration as Talk_Time_Seconds
           , a.holdtimesecs as Hold_Time_Seconds

          FROM ambition.session a
            INNER JOIN ambition.callsummary b ON a.NOTABLECALLID = b.NOTABLECALLID
            right join jackson_id.users c on a.callingpartyno = c.extension or a.finallycalledpartyno = c.extension
            LEFT JOIN ambition.known_numbers k ON a.callingpartyno = k.phone_number
        left join ambition.known_numbers kn on a.finallycalledpartyno = kn.long_number
                WHERE a.ts >= '2017-12-07' -- curdate()
                and(a.CALLINGPARTYNO in (select extension from ambition.ambition_users) OR a.finallycalledpartyno IN (select extension from ambition.ambition_users))
          ) x
          order by extension;") or die(mysqli_error( $conn2));

以及当前CSV的屏幕截图:enter image description here

正如您所看到的,它从代理7200到代理7206.但是我需要在每列中插入一行总计那些x的行。

php mysql excel csv
1个回答
0
投票

试试https://github.com/PHPOffice/PHPExcel库,它非常适合创建Excel文件,你可以添加公式来进行加法。希望有所帮助!

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