以下是原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 '隊(duì)名', SUM(POkScore+PAdjustScore) '總分',"
+ sqlstr + " from PerScore where PHallID='"
+ Guid.Parse(Session["hid"].ToString())
+ "' group by PTID,PTName order by '總分' desc ";
以下是上面sql語句執(zhí)行時(shí)的語句:(假設(shè)dglist有三條記錄,分別是“合并利潤表”、“利潤表試題”、“資金日報(bào)表”)
select PTName '隊(duì)名', 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='資金日報(bào)表' then PState else null end)'資金日報(bào)表',
from PerScore where PHallID='eecb075c-3862-4519-b966-7e9e4f287890' group by PTID,PTName order by '總分' desc
現(xiàn)在我希望把上面這個(gè)sql語句轉(zhuǎn)換成linq to sql ,謝謝!
注:紅色PerScore表示數(shù)據(jù)表,咖啡色注明的表示是這張表的字段。
請問在Linq to sql 中,怎么使用 sql 語句中的 max(case when ... then ... else ... end) 語法?
米脂
2018-12-07 09:33:33