救助 分组按条件聚合查询怎么做? 返回

求助
2 293

我想要生成这样的 sql 语句:

select 

 COUNT(case `Status` when 0 then 1  end) as `hate` 

,COUNT(case `Status` when 1 then 1  end) as `like`

 from tb_likes  where rid =6  GROUP BY rid



代码中写法

            var q = db.Queryable<tb_likes>().Where(x => x.RID == rid).GroupBy(x => x.RID).Select(x => new

            {

                like= SqlFunc.IIF(x.Status == 1, SqlFunc.AggregateCount(x.Status), 0), //喜欢数 

                hate = SqlFunc.IIF(x.Status == 0, SqlFunc.AggregateCount(x.Status), 0), //讨厌数 

            });


这样写生成的 sql 如下(查询结果不正确)

select 

 COUNT(case when (`Status`==0) then 1  else 0  end) as `hate` 

,COUNT(case when (`Status`==1) then 1  else 0  end) as `like`

 from tb_likes  where rid =6  GROUP BY rid


各位大佬,怎么破?

热忱回答2

  • ..A.. ..A.. VIP0
    2020/3/31

    可以试试分组里面写两个字段:

    var q = db.Queryable<tb_likes>().Where(x => x.RID == rid).GroupBy(x =>new {x.RID,x.Status});


    0 回复
  • 如果是用Count 就不需要case when了吧,看你这个应该用 sum吧

    0 回复

版块

学习文档

最新会员

发布达人

回贴达人