Оконные функции (window functions)

Оконные функции в языке запросов 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.00016.000
2015-03-02T15:27:11{215:11008a84-432f-9a52-11d9-55bcdee6e16b}Расход10.0006.000

Пример нумерации результата запроса по порядку ROW_NUMBER() OVER(...):

SELECT
  ROW_NUMBER() OVER(ORDER BY Код DESC) AS No,
  Код,
  Наименование
FROM
  Справочник.Номенклатура

NoКодНаименование
1MS-05Товар 05
2MS-04Товар 04
3MS-03Товар 03
4MS-02Товар 02
5MS-01Товар 01