Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按“类型”列从表中获取数据时发生SQL错误_Sql_Database_Laravel - Fatal编程技术网

按“类型”列从表中获取数据时发生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谢谢,现在问题解决了