首页 > 解决方案 > SQL 查询在控制台中运行,但不是通过 Laravel 查询生成器

问题描述

我有一个Sanad在 Microsoft SQL Server 中调用的表,它有两列bedehbestan. 我想在 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 中运行它时,它可以完美地获取代码。有谁知道问题是什么?

谢谢,哈比卜

标签: sql-serverlaravel

解决方案


您是否尝试在查询中转换值,即

sum(isnull(cast(bedeh as float),0)) as bed, 
sum(isnull(cast(bestanh as float),0)) as bes

推荐阅读