为了账号安全,请及时绑定邮箱和手机立即绑定

请问在Linq to sql 中,怎么使用 sql 语句中的 max(case when ... then ... else ... end) 语法?

请问在Linq to sql 中,怎么使用 sql 语句中的 max(case when ... then ... else ... end) 语法?

米脂 2018-12-07 09:33:33
以下是原Sql语句: dglist = GetExamInfo(); //获取试题信息 for (int i = 0; i < dglist.Count; i++) { //其中 PExamName 、PState 是 PerScore 表中的字段 sqlstr += " max(case when PExamName='" + dglist[i].HExamName + "' then PState else null end)'" + dglist[i].HExamName + "',"; } if (sqlstr.Length > 0) sqlstr = sqlstr.Substring(0, sqlstr.Length - 1); sqlstr = " select PTName '队名', SUM(POkScore+PAdjustScore) '总分'," + sqlstr + " from PerScore where PHallID='" + Guid.Parse(Session["hid"].ToString()) + "' group by PTID,PTName order by '总分' desc "; 以下是上面sql语句执行时的语句:(假设dglist有三条记录,分别是“合并利润表”、“利润表试题”、“资金日报表”) select PTName '队名', SUM(POkScore+PAdjustScore) '总分', max(case when PExamName='合并利润表' then PState else null end)'合并利润表', max(case when PExamName='利润表试题' then PState else null end)'利润表试题', max(case when PExamName='资金日报表' then PState else null end)'资金日报表', from PerScore where PHallID='eecb075c-3862-4519-b966-7e9e4f287890' group by PTID,PTName order by '总分' desc 现在我希望把上面这个sql语句转换成linq to sql ,谢谢! 注:红色PerScore表示数据表,咖啡色注明的表示是这张表的字段。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

在LINQ TO SQL里使用行转列倒是没用过,不过,你可以在数据库服务器定义一个视图,然后再建立模型对象。

此外,也可以通过DATACONTEXT来执行一段SQL语句,获取执行后的数据,只是此时不再是MODEL,需要你自己再处理。

查看完整回答
反对 回复 2019-01-07
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

查看完整回答
反对 回复 2019-01-07
  • 2 回答
  • 0 关注
  • 593 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信