按“类型”列从表中获取数据时发生SQL错误
我想在单个查询中按日期分组,但数据不同。到目前为止,我已经尝试过:按“类型”列从表中获取数据时发生SQL错误,sql,database,laravel,Sql,Database,Laravel,我想在单个查询中按日期分组,但数据不同。到目前为止,我已经尝试过: $record_by_date = DB::select("SELECT SUM(amount) as 'amount', cast(date as date) dateAdded FROM expense_incomes WHERE (CASE WHEN type='Expense' THEN 'Expense' WHEN type='Income' THEN 'Income' END AS Typ
$record_by_date = DB::select("SELECT SUM(amount) as 'amount',
cast(date as date) dateAdded FROM expense_incomes WHERE (CASE WHEN
type='Expense' THEN 'Expense' WHEN type='Income' THEN 'Income' END AS Type)
GROUP BY cast(date as date)");
首先,这是正确的方法吗?我正在使用CASE
第二,如果这是正确的方式,我得到的错误,如何解决这个问题?
SQLSTATE[42000]:语法错误或访问冲突:1064您有
SQL语法错误;检查与您的产品相对应的手册
MariaDB服务器版本,以获得使用near'AS类型的正确语法
按castdate作为日期分组,在第1行SQL:选择SUMamount作为
“金额”,castdate作为日期从费用和收入中添加,其中
当类型为“费用”时,则为“费用”,当类型为“收入”时,则为“费用”
“收入”按castdate截止日期作为类型组结束
WHERE子句中有一个错误,CASE定义了类型,但它实际上并没有将它与任何东西进行比较,所以它有点像WHERE1您似乎将SQL查询放在DB::select中 尝试使用DB::raw以获得所需的结果
$record_by_date = DB::raw("SELECT SUM(amount) as 'amount',
cast(date as date) dateAdded FROM expense_incomes WHERE (CASE WHEN
type='Expense' THEN 'Expense' WHEN type='Income' THEN 'Income' END AS Type)
GROUP BY cast(date as date)"))->get();
如何按类型求和?删除WHERE,添加第三个结果列类型,并按两列分组,castdate为日期和类型,用逗号分隔。我已经尝试过这个方法,不起作用摆脱case语句,尝试按类型分组我得到了2021-04-04的两条记录,4月4日既有费用又有收入,你还需要这个问题的答案吗?@MKhalidJunaid谢谢,现在问题解决了