Есть ли ссылки на сущности, эквивалентные для функции LAG () в SQL? - PullRequest
0 голосов
/ 30 апреля 2019

Я создал запрос для отчета «Продажи за месяц за месяцем», используя функцию LAG в SQL. Я обнаружил, что не доступен в linq. Есть ли еще способ сделать это?

1 Ответ

2 голосов
/ 09 июля 2019

LinqTo2Db поддерживает Функции окон Lag и Lead:

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)

Первый 8 из всех 43 поддерживаемые функции (!)

|-------------|----------------------| 
|    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 - ошибка будет выдана на стороне базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...