Создание более конкретного отчета в скрипте Sql / php

0

У меня довольно плотный sql-запрос, запущенный в php-скрипте, который в основном объединяет числа для каждого из наших сотрудников по телефону, создает CSV и затем прикрепляет его к электронной почте через почтовую программу PHP.

Это отлично работает, но мне поручено сделать его полным отчетом (т.е. Отчет Excel, отформатированный и т.д.) С итоговыми значениями для каждого сотрудника. Сейчас у него в основном есть позиции для каждого сотрудника, поэтому у сотрудника А может быть 32 записи, а затем он подходит к Employee B. Мне нужно изменить его так, чтобы в конце записей Employee A он вставлял строку, которая суммирует значения для каждого столбца.

Я полагаю, что я мог бы сделать это только с использованием PHP, так как это в PHP-скрипте, но я не знаю, как это сделать, и я надеюсь на некоторое руководство, которое я могу применить к остальной части запроса,

Я думаю, что может быть полезно создать переменную для полей/столбцов, чтобы я мог создать СУММ таким образом, но я нахожусь в этом над головой.

Здесь 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: Изображение 174551

Как вы можете видеть, это от агента 7200 до агента 7206. Но мне нужно вставить строку, которая составляет эти x в каждом столбце.

Теги:
csv
excel

1 ответ

0

Попробуйте библиотеку https://github.com/PHPOffice/PHPExcel, она отлично подходит для создания файлов Excel, и вы, вероятно, можете добавить в формулы для сложения. Надеюсь, это поможет!

  • 0
    Я думаю, CSV или Excel, это не его вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню