表中的PHP多个总计

时间:2016-11-25 08:43:31

标签: php sql

我有一个包含多个列的SQl表,在此表中有一个pageNr列。我需要在Web界面上显示一个表,该表将表作为输出,但按pageNr分组,在每个pageNr组之后,我需要显示此pageNr的总计。

我的代码目前看起来像这样:

$getItemsTable = "SELECT *
      FROM   [DB].[dbo].[Table]
       WHERE [Month1]='$month1' AND [Year1]='$year1'
      AND Page != '0' AND (Flag != 'C' AND OfferType != '')
      GROUP BY Page, PseudoNum, PBillDate,PBillMonth,PBillYear, PNum,Pseudo, Flag,Position,Code,Descrip,OfferType,BrandCode,Brand,Segment,Category,SubCategory,NewCategory,Disc,ListPrice,RSP,NamPerc,NamPric,UnitCost,Discount,Qty,NoOfProd,QtyTot,GSV,NSV,GPVal,GPPerc,UnitsCont,GSVCont,Micro,Highlighted,ModelWear,ModelEthnic,FUnitsPerOrd,FUnitsPerAdv,Month1,Year1,CostPerc,ForecastOrders,ForecastAdv,ForecastUnits,GSVTotal,Comments,Markest
      Order by CAST(Page AS integer) ASC,[Code] 
";    
      $execgetItemsTable = sqlsrv_query($conn,$getItemsTable);
     // echo "$getItemsTable";

$checkPgNum = "SELECT 
                       SUM(CAST([Qty] AS float)) AS TotQty
                      ,SUM(CAST([QtyTot] AS float)) AS TotQtyTot
                      ,SUM(CAST([ListPrice] AS float)) AS TotListPrice
                      ,SUM(CAST([GSV] AS float)) AS TotGSV
                      ,SUM(CAST([NSV] AS float)) AS TotNSV
                      ,SUM(CAST([GPVal] AS float)) AS TotGPVal
                      ,SUM(CAST([GPPerc] AS float)) AS TotGPPerc
                      ,SUM(CAST([GSVCont] AS float)) AS TotGSVCont
                      ,SUM(CAST([NoOfProd] AS float)) AS TotNoOfProd2
                      ,Page
                      FROM   [DB].[dbo].[Table]
                     WHERE [Month1]='$month1' AND [Year1]='$year1'
                      AND (Flag != 'C' AND OfferType != '') AND Page != '0'
                      GROUP BY Page";
    //echo $checkPgNum;  
 $execcheckPgNum = sqlsrv_query($conn,$checkPgNum);
$CountTimes = 0;



while($a_rows = sqlsrv_fetch_object($execgetItemsTable))
{

    //$PageTot ='';
    while($b_rows = sqlsrv_fetch_object($execcheckPgNum))
        {
            echo"<pre>";
            print_r($b_rows);
            echo"</pre>";
            $PageTot = $b_rows->TotNoOfProd2;

    }
    echo "##########".$PageTot."<br>";
    $PgN = '';
    if($PgN != $a_rows->Page)   
    {


        $PageCount = 0;
                $OldPage = $PgN;
                $PgN = $a_rows->Page;
                Echo "PageCount ".$PageCount."<br>";
                Echo "PageTot ".$PageTot."<br>";
                if($PageCount <= $PageTot)
                {
                    $Pack2Fin .= "<tr id='row$PCode' style='display:show' bgcolor='#BFBFBF'>";
                    $Pack2Fin .= "<td align='left' colspan='8' bgcolor='#BFBFBF'><B>$OldPage Total1</B></td>";
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>$PLQuantTotL</B></td>";
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>$QtyTotL</B></td>";
                    $GSVTotL = number_format($GSVTotL,0,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF' nowrap><B>R $GSVTotL</B></td>";
                    $NSVTotL = number_format($NSVTotL,0,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>R $NSVTotL</B></td>";
                    $GPValTotL = number_format($GPValTotL,0,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>R $GPValTotL</B></td>";
                    $GPPercTotL = number_format($GPPercTotL,0,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>$GPPercTotL%</B></td>";
                    $PCostTotL = number_format($PCostTotL,2,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>R $PCostTotL</B></td>";
                    $SSCostTotL = number_format($SSCostTotL,2,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>R $SSCostTotL</B></td>";
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>$NoOfProdTotL</B></td>";
                    $UnitsContTotL = number_format($UnitsContTotL,0,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>$UnitsContTotL %</B></td>";
                    $GSVContTotL = number_format($GSVContTotL,0,'.',' ');
                    $Pack2Fin .= "<td align='right' bgcolor='#BFBFBF'><B>$GSVContTotL %</B></td>";
                    $Pack2Fin .= "</tr>";       
                    $GranTotQuant = $GranTotQuant + $PLQuantTotL;
                    $GranQtyTotL = $GranQtyTotL + $QtyTotL;
                    $GranGSVTotL = $GranGSVTotL + $GSVTotL;
                    $GranNSVTotL = $GranNSVTotL + $NSVTotL;
                    $GranNSVTotL = $GranNSVTotL + $NSVTotL;
                    $GranGPValTotL = $GranGPValTotL + $GPValTotL;
                    //$GranGPPercTotL = $GranGPPercTotL + $GPPercTotL;
                    $GranGPPercTotL = ($GranGPValTotL/$GranNSVTotL)*100;
                    $GranPCostTotL = $GranPCostTotL + $PCostTotL;
                    $GranSSCostTotL = $GranSSCostTotL + $SSCostTotL;
                    $GranNoOfProdTotL = $GranNoOfProdTotL + $NoOfProdTotL;
                    $GranUnitsContTotL = $GranUnitsContTotL + $UnitsContTotL;
                    $GranGSVContTotL + $GranGSVContTotL + $GSVContTotL;
                }

                $Pack2Fin .= "<tr id='row$PCode' style='display:show' >";
                $Pack2Fin .= "<td align='center'>$PgN</td>";
                /*if($LineNo == 1)
                    $QtyTotL = 1;
                else*/
                //$PageTot = 0;
                $PLQuantTotL = 0;
                $QtyTotL = 0;
                $GSVTotL = 0;
                $NSVTotL = 0;
                $GPValTotL = 0;
                $GPPercTotL = 0;
                $PCostTotL = 0;
                $SSCostTotL = 0;
                $NoOfProdTotL = 0;
                $UnitsContTotL = 0;
                $GSVContTotL = 0;


        $PageCount = $PageCount + 1;        
    }
    else
    {


        $Pack2Fin .= "<tr id='row$PCode' style='display:show' >";
        $Pack2Fin .= "<td align='center'></td>";

    }

这是我的当前输出 Current output

正如你所看到的,在没有pageNr的地方,他给了我正确的总数,但是如果有一个页码,它会给我一行总计。

0 个答案:

没有答案