当前位置: 首页 > 面试题库 >

Entity Framework与“ ASE THE NHEN”(T-SQL)等效吗?

严天逸
2023-03-14
问题内容

我有一个Transact-SQl请求,我经常使用它,并且我想获得与Entity Framework相同的请求。但是我不知道如何用EF进行“ CASE
WHEN”语句。这是我的请求的简化代码

SELECT Code,
SUM(CASE WHEN Month=1 THEN Days Else 0 END) AS Jan,
FROM MyTable 
GROUP BY Code

您能告诉我是否有可能以及如何使用EF做到这一点?


问题答案:

在这种情况下,我想说条件运算符(p ? x : y)是一个很好的替代品。

// context.MyTable is an IQueryable<MyTable>
var query = from t in context.MyTable
            group t by t.Code into grp
            select
            new {
                Code = grp.Key,
                Jan = grp.Sum(x => x.Month == 1 ? x.Days : 0),
            };

或将aWhere和a组合Sum

                Jan = grp.Where(x => x.Month == 1).Sum(x => x.Days),

我不知道这些SQL到底能翻译成什么SQL,但是它们都应该具有相同的结果。



 类似资料:
  • 问题内容: 我有几个内容表,我想用随机的文本段落来填充。在MS Word中,我可以简单地将= rand()和presto放在一起!我得到了三段现成的文字。 是否存在可用于使用t-sql生成随机词典单词的SQL脚本/命令? 问题答案:

  • 问题内容: 我想将“ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 …”(以逗号分隔)拆分为一个表或表变量。 有人有连续返回每个函数的函数吗? 问题答案: 这是一些老式的解决方案: 在SQL Server 2008中,您可以使用.NET代码实现相同的目的。也许它会更快地工作,但是绝对可以更轻松地管理这种方法。

  • 问题内容: 需要将一些代码从MySql移到TSql。我对INET_ATON进行了两次调用,该调用将类似于IPAddress的字符串转换为数字。是否有等效的T-SQL? 问题答案: 滥用parsname函数: 不过,此处不支持“简写地址”。

  • 我是MySQL的新手。我有以下SQL查询,并尝试转换为mysql,为表create脚本中的日期列提供默认值。 但在MySQL中不支持。获取以下错误。 错误代码:1064。您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以了解第1行“(-1),sysutcdatetime())”附近使用的正确语法 此外,我还需要以以下格式获取日期'9999-12-31 23:59:59.99999

  • 问题内容: 我想拥有一个与PostgreSQL等效的Sql Server 我可以在SQL Server中执行以下操作: 但是,在有许多列并且查询是临时查询的情况下,这样做非常繁琐。有一个简单的方法吗? 问题答案: 您可以尝试,但它可能会影响您的性能。

  • 问题内容: 我正在处理一个令人讨厌的数据库,其中一个字段包含实际上应存储的两个单独字段。因此,该列存储的内容类似于“第一个字符串〜@〜第二个字符串”,其中“〜@〜”是定界符。(再次,我没有设计这个,我只是想解决它。) 我希望查询将其移动到两列中,看起来像这样: 但是我找不到与strpos等效的东西。 问题答案: 用户charindex: 关联