当groupby字段使用了函数,则sugar会报错,提示xxx字段未包含在groupby中 返回

SqlSugar 处理中
7 204
该叫什么 cr7 发布于1周前
悬赏:0 飞吻
var groupModel = new List<GroupByModel> { new GroupByModel { FieldName = ObjectFuncModel.Create("IsNull", "DJBH", "{string}:")} };
var selectModel = new List<SelectModel> { new SelectModel { FieldName = ObjectFuncModel.Create("IsNull", "DJBH", "{string}:"), AsName = "DJBH" } 
                                                                      , new SelectModel { FieldName = ObjectFuncModel.Create("AggregateSum",ObjectFuncModel.Create("IsNull","SL","{int}:0")), AsName = "SL" } };
var dtdjbh = _db.Queryable<dynamic>().AS("XXXXXX").GroupBy(groupModel).Select(selectModel).ToDataTable();


错误:Microsoft.Data.SqlClient.SqlException:“选择列表中的列 'XXXXXX.DJBH' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

但是生成出来的sql在数据库中,是可以执行的。

sql:
[Sql]:SELECT ISNULL([DJBH],@p0_1011) AS [DJBH] , SUM(ISNULL([SL],@p0_1022)) AS [SL] FROM [XXXXXX] GROUP BY  ISNULL([DJBH],@p0_1000)
[Pars]:
[Name]:@p0_1000 [Value]: [Type]:String
[Name]:@p0_1011 [Value]: [Type]:String
[Name]:@p0_1022 [Value]:0 [Type]:Int32

数据库是sqlserver


热忱回答7

  • @p0_1022

    @p0_1000

    因为2个参数不一样导致group不认。。我想想解决方案

    0 回复
  • cr7 cr7 VIP0
    1周前

    @fate sta



    0 回复
  • @cr7

      var dtdjbh =  db.Queryable<dynamic>().AS("XXXXXX").GroupBy(groupModel).Select(selectModel).ToSqlString();
      db.Ado.ExecuteCommand(dtdjbh);

    groupby如果有参数就直接去参数化用SQL执行吧

    0 回复
  • cr7 cr7 VIP0
    1周前

    @fate sta:没有别的办法了吧,因为我是多个查询UnionAll,是不是可以将多个query都转成sql,拼接一起最后一起执行?

    0 回复
  • 我想办法支持一下吧

    0 回复
  • cr7 cr7 VIP0
    1周前

    @fate sta:大佬V5

    0 回复
  • cr7 cr7 VIP0
    1周前

    @fate sta:麻烦问下更新包多久能出来?等着用

    0 回复