繁体   English   中英

是否存在与SQL中的LAG()函数等效的实体的linq?

[英]Is there a linq to entities equivalent for the LAG() function in SQL?

我使用SQL中的LAG函数创建了按月销售报表的查询。 我发现在linq中不可用。 有没有办法做到这一点?

LinqTo2Db支持窗口函数 LagLead

from x in db.Events
let prev = Sql.Ext
                .Lag(x.app, Sql.Nulls.None)
                .Over()
                .OrderBy(x.time)
                .ToValue()
where  (prev != x.app && prev != null)
select (prev, x.app)

所有43个受支持的功能中的8 (!)

|-------------|----------------------| 
|    SQL      |       Linq2db        |
|-------------|----------------------| 
| AVG         | Sql.Ext.Average()    |
| CORR        | Sql.Ext.Corr()       |
| COUNT       | Sql.Ext.Count()      |
| COVAR_POP   | Sql.Ext.CovarPop()   |
| COVAR_SAMP  | Sql.Ext.CovarSamp()  |
| CUME_DIST   | Sql.Ext.CumeDist()   |
| DENSE_RANK  | Sql.Ext.DenseRank()  |
| FIRST_VALUE | Sql.Ext.FirstValue() |
|-------------|----------------------|

注意窗口函数的使用没有限制。 LINQ To DB将创建SQL并运行查询,如果不支持功能或功能的某些部分在特定Database受到限制-将在数据库端引发错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM