我正在使用以下内容尝试以下列格式输出我的月度总计:
January
Quoted Total : £678
Parts Total : £432
Profit Total : £244
February
Quoted Total : £650
Parts Total : £345
Profit Total : £123
等..........
// 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 : £'.$pricequoted.'</strong></p>';
echo '<p><strong style="color:Darkorange ;">Parts Total : £'.$partprice.'</strong></p>';
echo '<p><strong style="color:green;">Profit Total : £'.$profit.'</strong></p>';
}
echo '</div>';
我得到的问题是它只输出运行总计,所以我在页面底部获得了以下内容,但仅此而已:
Work Complete Totals
Quoted Total : £1460.00
Parts Total : £541.43
Profit Total : £918.57
如果我在phpmyadmin中运行上述查询,我会得到结果:
pricequotedtotal partpricetotal profittotal month
1460 541.43 918.5699999999998 NULL
我的表格布局如下:
id customerID name facebookuserurl tel email address itemforrepair repairdetails otherdetails pricequoted partprice profit datepartordered jobstatus dateofcompletion datecreated itemnumber
以下是一个示例行:
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
编辑&gt;&gt; 下面是表格中几行的屏幕截图。
编辑&gt;&gt;
这是我的表结构:
答案 0 :(得分:6)
您需要更改此
DATE_FORMAT('%Y-%m', completeddate)
到
DATE_FORMAT(completeddate, '%Y-%m')
这就是您在NULL
列中获得month
因此只有一行的原因。
请参阅manual entry。
答案 1 :(得分:5)
伊恩,
我想以下查询会对您有帮助。
SELECT SUM(pricequoted)AS pricequotedtotal,SUM(partprice)AS partpricetotal,SUM(profit)profittotal,MONTHNAME(dateofcompletion)FROM jobdetails
WHERE jobstatus ='complete'GROUP BY DATE_FORMAT(dateofcompletion,'%Y- %m')按日期顺序完成;
+------------------+----------------+-------------+-----------------------------+ | pricequotedtotal | partpricetotal | profittotal | MONTHNAME(dateofcompletion) | +------------------+----------------+-------------+-----------------------------+ | 140 | 114.98 | 25.02 | May | | 140 | 114.98 | 25.02 | June | +------------------+----------------+-------------+-----------------------------+ 2 rows in set (0.00 sec)
答案 2 :(得分:4)
SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) profittotal,
应该是
SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) AS profittotal,
你错过了一个“AS”
答案 3 :(得分:4)
您可以尝试此查询
SELECT SUM(pricequoted) AS pricequotedtotal,
SUM(partprice) AS partpricetotal,
SUM(profit) AS profittotal,
MONTHNAME(completeddate) AS month
FROM `jobdetails`
WHERE jobstatus='complete'
GROUP BY MONTH(completeddate)
上表中不存在列'completeddate',而是使用'dateofcompletion'
因此,运行查询并将它们放入while
循环将产生您想要的
此外,我看到了您的表格结构,最好使用varchar
,int
,float
等格式化表格。text
列消耗更多内存