Php 如何在此foreach中显示每日总计?
我做了一个查询MSSQL数据库的函数,以获得代表的每日总计列表。我用ISO周编号将它们分组为周,然后显示天数。在本周结束时,我得出一个总数,因此: 您可以从图像中看到,每周都会自动分隔,然后每一行都有日期、代表和总数据。在我画红线的地方,我希望能够用额外的一行来计算一天的总数,但不太清楚如何做到这一点,我猜是用额外的嵌套Php 如何在此foreach中显示每日总计?,php,sql-server,foreach,Php,Sql Server,Foreach,我做了一个查询MSSQL数据库的函数,以获得代表的每日总计列表。我用ISO周编号将它们分组为周,然后显示天数。在本周结束时,我得出一个总数,因此: 您可以从图像中看到,每周都会自动分隔,然后每一行都有日期、代表和总数据。在我画红线的地方,我希望能够用额外的一行来计算一天的总数,但不太清楚如何做到这一点,我猜是用额外的嵌套foreach 以下是产生上述结果的当前函数: function getWorkInByDay() { global $db; $data = '';
foreach
以下是产生上述结果的当前函数:
function getWorkInByDay()
{
global $db;
$data = '';
// Build query
$q = mssql_query("SELECT DATEPART(isowk,Datedb) AS 'Week', DAY(Datedb) AS 'Day', Ref1 AS 'Rep', SUM(PriceEst) AS 'Total', Datedb AS 'Date' FROM MainJobDetails WHERE MONTH(Datedb) = " . date('m') . " AND YEAR(Datedb) = " . date('Y') . " GROUP BY DATEPART(isowk,Datedb), DAY(Datedb), Ref1, Datedb",$db);
$weeks = array();
while($r = mssql_fetch_assoc($q)) {
$weeks[$r['Week']][] = $r;
}
foreach ($weeks as $w => $rs) {
$t = 0;
$data .= "<table class='data full-width'>";
$data .= "<thead><tr><td colspan='3'>". date('F'). " - Week ".$w."</td></tr></thead>";
foreach ($rs as $r) {
$data .= "<tr>";
$data .= "<td>".date('l',strtotime($r['Date']))."</td>";
$data .= "<td>".$r['Rep']."</td>";
$data .= "<td>£".number_format($r['Total'], 2, '.', ',')."</td>";
$data .= "</tr>";
$t += $r['Total'];
}
$data .= "<tr><td></td><td></td><td><strong>Total: £".number_format($t, 2, '.', ',')."</strong></td></tr>";
$data .= "</table>";
}
return $data;
}
函数getWorkInByDay()
{
全球$db;
$data='';
//生成查询
$q=mssql_查询(“选择DATEPART(isowk,Datedb)作为“周”,DAY(Datedb)作为“天”,Ref1作为“代表”,SUM(Pricest)作为“总计”,Datedb作为“日期”,其中MONTH(Datedb)=“.Date('m').”和YEAR(Datedb)=“.Date('Y').”按日期部分分组(isowk,Datedb),Date(Datedb),Ref1,Datedb“,$db);
$weeks=array();
而($r=mssql\U fetch\U assoc($q)){
$weeks[$r['Week'][]=$r;
}
foreach(周为$w=>$rs){
$t=0;
$data.=“”;
$data.=“.date('F')”-周“$w.”;
外汇(卢比等于卢比){
$data.=“”;
$data.=''.date('l',strottime('r['date']))。'';
$data.=''.r['Rep'].'';
$data.=“£”.number_格式($r['Total'],2',',',');
$data.=“”;
$t+=$r[‘总计’];
}
$data.=“总计:£”。数字格式($t,2,',',')。””;
$data.=“”;
}
返回$data;
}
非常感谢您的帮助。您可以使用group by修饰符获取每个group by子句的总计行。您也可以使用简单的数据透视功能显示周和列