您好,请使用人工制品领域按年份和月份订购 我的代码:
\App\User::select(DB::raw('SUM(Comptabilise)* -1 as `data`'), DB::raw("DATE_FORMAT(date, '%m-%Y') new_date"), DB::raw('MONTHNAME(date) month'))
->groupby('month')
->orderBy('YEAR(new_date)', 'ASC')
->orderBy('MONTH(new_date)', 'ASC')
->get();
我想按新日期从最小日期到最大的顺序订购,例如从05-2018到10-2019 请您能帮我做,谢谢吗?
答案 0 :(得分:1)
我通过此代码对其进行了修复,感谢您的宝贵时间!
\App\User::select(DB::raw('SUM(Comptabilise)* -1 as `data`'), DB::raw("DATE_FORMAT(date, '%Y') year"),DB::raw('MONTH(date) months'), DB::raw('MONTHNAME(date) month'))
->groupby('month')
->orderBy('year', 'ASC')
->orderBy('months', 'ASC')
->get();
答案 1 :(得分:1)
请注意,您的group by
子句似乎不正确。
您正在按月份名称分组。因此,如果您的数据分布于12个月以上,则最终仍将仅获得12条记录,结果集将具有相同月份但不同年份的记录分组在一起。
您应该将group by子句添加到年,就像这样:
\App\User::select(DB::raw('SUM(Comptabilise)* -1 as `data`'), DB::raw("YEAR(date) year"),DB::raw('MONTH(date) months'), DB::raw('MONTHNAME(date) month'))
->groupBy('year')
->groupBy('months')
->orderBy('year', 'ASC')
->orderBy('months', 'ASC')
->get();
注意:MySQL有一个YEAR()
函数,我在查询中使用了它,因为它与MONTH()
的一致性更强,它使用了DATE_FORMAT()
这样的字符串转换方法。