sql-server - SQL 查询在控制台中运行,但不是通过 Laravel 查询生成器
问题描述
我有一个Sanad
在 Microsoft SQL Server 中调用的表,它有两列bedeh
和bestan
. 我想在 Laravel 中获取它的 bedeh 和 bestan 的所有代码和总和,前提是它的 bedeh 的总和高于 bestan 的总和。另外,bedeh 和 bestan 的数据类型都是money。这是我在 Laravel 6 中为此目的编写的代码:
DB::table('t1')
->fromSub(function ($query){
return $query->selectRaw('Code, sum(bedeh) bed, sum(bestan) bes')
->from('Sanad')
->groupBy('Code');
}, 't1')
->where('bed', '>', 'bes')
->get();
但是,当执行代码时,我遇到了以下问题:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法将 char 值转换为货币。char 值的语法不正确。(SQL: select * from (select Code, sum(bedeh) bed, sum(bestan) bes
有趣的是,当我复制结果查询并在 Management Studio 中运行它时,它可以完美地获取代码。有谁知道问题是什么?
谢谢,哈比卜
解决方案
您是否尝试在查询中转换值,即
sum(isnull(cast(bedeh as float),0)) as bed,
sum(isnull(cast(bestanh as float),0)) as bes
推荐阅读
- reactjs - 如何将带有 styled-components 的样式应用于包装在 Material UI 网格中的组件?
- .net - 操作系统如何调用用户计划的任务来执行?
- javascript - Javascript 函数返回 undefined 即使值存在
- java - 为什么这段代码会导致堆栈溢出?为什么只需将 ==1 更改为 <2,然后它就可以工作了?
- c# - 淘汰赛 JS 选择初始值在 foreach 循环内未正确显示
- django - 在 django 中,如何从 url 声明中传递 RequestContext?
- awk - 如何针对另一个文件执行一个文件中的单词搜索并在一行中显示第一个匹配的单词
- python-3.x - 使用 nginx + tornado 处理 5000 个 websocket 连接时打开的文件过多
- python - 对于每次迭代,只将数据添加到 pandas 中空数据框的几列
- python - 为什么 PIL 和 matplotlib 在这里创建完全不同的图像?