每月总计月份返回NULL,仅输出运行总计

Iai*_*son 5 php mysql sql group-by running-total

我使用以下内容尝试以如下格式输出我的月度总计:

 January
 Quoted Total : £678
 Parts Total : £432
 Profit Total : £244

 February
 Quoted Total : £650
 Parts Total : £345
 Profit Total : £123
Run Code Online (Sandbox Code Playgroud)

等等..........

    // Work Complete Totals
    $query = $db->query("SELECT SUM(pricequoted) AS pricequotedtotal,
                                SUM(partprice) AS partpricetotal,
                                SUM(profit) profittotal,
                                DATE_FORMAT('%Y-%m', completeddate) AS month 
                         FROM `jobdetails` 
                         WHERE jobstatus='complete'
                         GROUP BY DATE_FORMAT('%Y-%m', completeddate)");


    echo '<div style="float:right; padding-right:10px;">';
    echo '<strong>Work Complete Totals</strong>';

    while($result = $query->fetch_object()) {

        $pricequoted = number_format($result->pricequotedtotal, 2, '.', '');
        $partprice   = number_format($result->partpricetotal, 2, '.', '');
        $profit      = number_format($result->profittotal, 2, '.', '');

        echo '<p><strong style="color:red;">Quoted Total : &pound;'.$pricequoted.'</strong></p>';
        echo '<p><strong style="color:Darkorange ;">Parts Total : &pound;'.$partprice.'</strong></p>';
        echo '<p><strong style="color:green;">Profit Total : &pound;'.$profit.'</strong></p>';
    }

    echo '</div>';
Run Code Online (Sandbox Code Playgroud)

我得到的问题是它只输出运行总计,所以我在页面底部的ONCE得到以下内容,但仅此而已:

Work Complete Totals
Quoted Total : £1460.00

Parts Total : £541.43

Profit Total : £918.57
Run Code Online (Sandbox Code Playgroud)

如果我在phpmyadmin中运行上面的查询,我得到结果:

pricequotedtotal    partpricetotal  profittotal        month
      1460              541.43      918.5699999999998   NULL
Run Code Online (Sandbox Code Playgroud)

我的表格布局如下:

id  customerID  name    facebookuserurl tel email   address itemforrepair   repairdetails   otherdetails    pricequoted partprice   profit  datepartordered jobstatus   dateofcompletion    datecreated itemnumber
Run Code Online (Sandbox Code Playgroud)

以下是一个示例行:

49  37ac4   Ellen Frost https://www.facebook.com/ellen.mccormick.18             Galaxy S3 (Fullsize) Blue   Broken front glass and also digitiser not working.  Quoted customer on whole lcd, digitiser assembly r...   140 114.98  25.02   2013-05-02  complete    2013-05-08  2013-05-01  251258104217
Run Code Online (Sandbox Code Playgroud)

编辑>>下面是表格中几行的屏幕截图. 在此输入图像描述

编辑>>

这是我的表结构: 在此输入图像描述

fan*_*nts 6

你需要改变它

DATE_FORMAT('%Y-%m', completeddate)
Run Code Online (Sandbox Code Playgroud)

DATE_FORMAT(completeddate, '%Y-%m')
Run Code Online (Sandbox Code Playgroud)

这就是为什么你进入NULL你的month专栏,因此只有一行.

参见手册输入.


小智 5

伊恩

我想以下查询将对您有所帮助.

SELECT SUM(pricequoted)AS pricequotedtotal,SUM(partprice)AS partpricetotal,SUM(profit)profittotal,MONTHNAME(dateofcompletion)FROM jobdetailsWHERE jobstatus ='complete'GROUP BY DATE_FORMAT(dateofcompletion,'%Y-%m')order by dateofcompletion;


    +------------------+----------------+-------------+-----------------------------+
    | pricequotedtotal | partpricetotal | profittotal | MONTHNAME(dateofcompletion) |
    +------------------+----------------+-------------+-----------------------------+
    |              140 |         114.98 |       25.02 | May                         | 
    |              140 |         114.98 |       25.02 | June                        | 
    +------------------+----------------+-------------+-----------------------------+
2 rows in set (0.00 sec)