Объединение выбранных выписок с датами - PullRequest
0 голосов
/ 17 мая 2019

Пожалуйста, помогите мне, я хочу, чтобы мой оператор SQL Select объединялся в одном запросе

<?php

Total Assigned = SELECT date(DATE_DISTRIBUTE)
     , COUNT(DATE_DISTRIBUTE) AS TotalAssigned
  FROM ata_report_extracted WHERE STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_DISTRIBUTE) ";


Total Handled = "SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalHandled
  FROM ata_report_extracted WHERE PROS_DESCRIPTION NOT IN ('Open', 'Acknowledged', 'Fallout', 'Cleared') AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";

Total Resolved ="SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalResolved
  FROM ata_report_extracted WHERE PROS_DESCRIPTION = 'Closed' AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";

TotalDispatch ="SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalDispatch
  FROM ata_report_extracted WHERE PROS_DESCRIPTION ='Dispatch' AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";


TotalPending ="SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalPending
  FROM ata_report_extracted WHERE PROS_DESCRIPTION IN ('TOKUNDEROB', 'CALLNOANSWER') AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";

 ?>


<?php

Total Assigned = SELECT date(DATE_DISTRIBUTE)
     , COUNT(DATE_DISTRIBUTE) AS TotalAssigned
  FROM ata_report_extracted WHERE STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_DISTRIBUTE) ";


Total Handled = "SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalHandled
  FROM ata_report_extracted WHERE PROS_DESCRIPTION NOT IN ('Open', 'Acknowledged', 'Fallout', 'Cleared') AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";

Total Resolved ="SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalResolved
  FROM ata_report_extracted WHERE PROS_DESCRIPTION = 'Closed' AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";

TotalDispatch ="SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalDispatch
  FROM ata_report_extracted WHERE PROS_DESCRIPTION ='Dispatch' AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";


TotalPending ="SELECT date(DATE_HANDLED)
     , COUNT(DATE_HANDLED) AS TotalPending
  FROM ata_report_extracted WHERE PROS_DESCRIPTION IN ('TOKUNDEROB', 'CALLNOANSWER') AND STATUS ='DISTRIBUTED'
 GROUP BY date(DATE_HANDLED) ";

 ?>

Отображение общего количества отчетов в день в одном запросе

1 Ответ

0 голосов
/ 17 мая 2019

Все требования, изложенные в комментариях, включены в следующий запрос.Я использовал FULL JOIN, чтобы в одном запросе была доступна дата, а не в другом, которая также появляется в выходных данных.

SELECT 
CASE
    WHEN A.Date_Han_Dst IS NULL THEN B.Date_Han_Dst 
    ELSE A.Date_Han_Dst
END AS [Date_Han_Dst],
A.TotalHandled,
A.TotalResolved,
A.TotalDispatch,
A.TotalPending,
B.TotalAssigned
FROM 
(
    SELECT date(DATE_HANDLED)  AS [Date_Han_Dst],
    SUM(CASE WHEN PROS_DESCRIPTION NOT IN ('Open', 'Acknowledged', 'Fallout', 'Cleared') AND STATUS ='DISTRIBUTED' THEN 1 ELSE 0  END) AS TotalHandled,
    SUM(CASE WHEN PROS_DESCRIPTION = 'Closed' AND STATUS ='DISTRIBUTED' THEN 1 ELSE 0 END) AS TotalResolved,
    SUM(CASE WHEN PROS_DESCRIPTION ='Dispatch' AND STATUS ='DISTRIBUTED' THEN 1 ELSE 0 END) AS TotalDispatch,
    SUM(CASE WHEN PROS_DESCRIPTION IN ('TOKUNDEROB', 'CALLNOANSWER') AND STATUS ='DISTRIBUTED' THEN 1 ELSE 0  END) AS TotalPending
    FROM ata_report_extracted GROUP BY date(DATE_HANDLED)
)A
FULL JOIN
(
    SELECT date(DATE_DISTRIBUTE)  AS [Date_Han_Dst],
    SUM(CASE WHEN STATUS ='DISTRIBUTED' THEN 1 ELSE 0 END) TotalAssigned
    FROM ata_report_extracted GROUP BY date(DATE_DISTRIBUTE) 
)B
ON A.Date_Han_Dst = B.Date_Han_Dst
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...