Оконные функции в языке запросов DaJet реализованы как в обычном SQL. Подробную документацию по их использованию можно посмотреть в соответствующих руководствах по языку запросов MS SQL Server или PostgreSQL.
Пример вычисления нарастающего итога SUM(...) OVER(...):
DECLARE @НачалоПериода datetime = '2015-01-01T00:00:00';
DECLARE @КонецПериода datetime = '2015-03-31T23:59:59';
DECLARE @Товар Справочник.Номенклатура = '11008a84-432f-9a52-11d9-55bcdee6e16b';
SELECT
Период,
Номенклатура,
CASE WHEN ВидДвижения = 0 THEN 'Приход' ELSE 'Расход' END AS ВидДвижения,
ВНаличии AS Количество,
SUM(CASE WHEN ВидДвижения = 0 THEN ВНаличии ELSE -ВНаличии END)
OVER(ORDER BY Период ROWS UNBOUNDED PRECEDING) AS Итого
FROM РегистрНакопления.ТоварыНаСкладах
WHERE Номенклатура = @Товар
AND Период >= @НачалоПериода
AND Период <= @КонецПериода
Период | Номенклатура | ВидДвижения | Количество | Итого |
2015-03-02T11:57:12 | {215:11008a84-432f-9a52-11d9-55bcdee6e16b} | Приход | 16.000 | 16.000 |
2015-03-02T15:27:11 | {215:11008a84-432f-9a52-11d9-55bcdee6e16b} | Расход | 10.000 | 6.000 |
Пример нумерации результата запроса по порядку ROW_NUMBER() OVER(...):
SELECT
ROW_NUMBER() OVER(ORDER BY Код DESC) AS No,
Код,
Наименование
FROM
Справочник.Номенклатура
No | Код | Наименование |
1 | MS-05 | Товар 05 |
2 | MS-04 | Товар 04 |
3 | MS-03 | Товар 03 |
4 | MS-02 | Товар 02 |
5 | MS-01 | Товар 01 |