簡體   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