X,Y和Z有一些单独金额的表格。
示例数据:
Name | Amount | Date
—————|————————|—————————
X | 100 | 15-11-17
Y | 50 | 15-11-17
X | 50 | 15-11-17
Z | 70 | 15-11-17
Z | 30 | 15-11-17
现在我想显示一个表格,其中X将返回一行,并在同一日期将其两个值相加。
预期结果:
Name | Amount | Date
—————|————————|—————————
X | 150 | 15-11-17
Y | 50 | 15-11-17
Z | 100 | 15-11-17
那么laravel查询是什么?我使用groupBy()。但无法获得目标结果。
这是我的laravel查询代码
$data = DB::table('transactions')
->select('transactions.*')
->groupBy('transactions.title_id')
->whereDate('transactions.created_at', '=', $date)
->get();
并且持续出现此错误
"SQLSTATE[42000]: Syntax error or access violation: 1055 'finance_report.transactions.id' isn't in GROUP BY
任何人请帮助
答案 0 :(得分:1)
假设您的表名为transactions
,以及示例表中的列和数据 - SQL查询将
SELECT Name, SUM(Amount) as Amount, Date
FROM transactions
GROUP BY Name, Date
在laravel中你会把它写成
$data = DB::table('transactions')
->select('Name', DB::raw('SUM(Amount) as Amount'), 'Date')
->groupBy('Name', 'Date')
->get();
您可以添加WHERE条件以及查询所需的内容。但是,如果您需要从表中选择更多列,则还需要将它们添加到groupBy()
子句中。由于transactions.*
模式,ONLY_FULL_GROUP_BY
之类的内容可能无效。但它也可能没有意义。
答案 1 :(得分:0)
您可以将SUM(金额)与groupBy(日期)
一起使用