Исходя из структуры вашей таблицы, это, вероятно, проще всего сделать в PHP.Для этого в SQL потребуется таблица календаря, чтобы присоединиться к каждой строке.Поэтому вам нужно агрегировать значения для каждой даты, а затем выводить их.Примечание. Я предпочитаю работать с именами столбцов в качестве индексов массивов, поскольку легче увидеть, что вы делаете:
$data = array();
// collate the data
while ($row = mysqli_fetch_array($result)) {
$start_res = strtotime($row['from_date']);
$end_res = strtotime($row['to_date']);
for ($res = $start_res; $res <= $end && $res <= $end_res; $res += 86400) {
if (!isset($data[$res])) $data[$res] = array('totals' => 0, 'agent' => 0, 'direct' => 0, 'over_agent' => 0, 'over_hotel' => 0, 'allotment' => 0);
$data[$res]['totals'] += $row['totals'];
$data[$res]['agent'] += $row['agent'];
$data[$res]['direct'] += $row['direct'];
$data[$res]['over_agent'] += $row['over_agent'];
$data[$res]['over_hotel'] += $row['over_hotel'];
$data[$res]['allotment'] += $row['allotment'];
}
}
// sort the data by date
ksort($data);
// now display the combined data
foreach ($data as $res_date => $row) {
?>
<tr>
<td><?= date('m/d/Y', $res_date) ?> </td>
<td><?= $row['totals'] ?> </td>
<td><?= $row['agent'] ?> </td>
<td><?= $row['direct'] ?> </td>
<td><?= $row['over_agent'] ?> </td>
<td><?= $row['over_hotel'] ?> </td>
<td><?= $row['allotment'] ?> </td>
<td>0</td>
<td style="background-color:gold"> 0</td>
<td>0 </td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<?php
}