[英]How to get the total amount in a database table field month wise of the current year using laravel
所以我有一个带有数量和 created_at 字段的数据库,我想要当年和/或每年每月的总金额。
$sql = 'SELECT SUM(amount) as "Amount",MONTHNAME(created_at) as "Month"
FROM transactions WHERE YEAR(created_at) = YEAR(CURDATE())
GROUP BY YEAR(created_at),MONTH(created_at)';
DB::statement($sql);
实际表
ID amount created_at
1 1000 2019-10-24
2 234 2019-11-11
3 122 2019-09-04
4 5200 2019-09-14
预期结果
ID Amount Month
1 6322 September
2 234 November
语法错误或访问冲突:1055 db.table.created_at 不在 Group by(SQL: SELECT SUM(amount) as "Total Amount", MONTHNAME(created_at) as "Month
请问它在说什么。 但是,如果在 phpmyadmin 上运行此查询,它工作得很好
首先在app\config\database -> mysql
中设置strict => false
之后运行php artisan optimize
然后
$sql = DB::table('transactions')
->select(DB::raw('SUM(amount) as Amount,MONTHNAME(created_at) as Month Name'))
->where(DB::raw('YEAR(created_at) = YEAR(CURDATE())'))
->groupBy('created_at')
->get();
您正在对created_at
的部分进行分组,然后在您SELECT
时引用created_at
本身。 问题是,当您在查询中对结果进行分组时,只能使用聚合函数和分组的事物。 如果您在 select 中使用MONTH(created_at)
而不是MONTHNAME
应该没问题(或者您可以group by YEAR, MONTHNAME
并继续在投影中使用MONTHNAME
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.