How-to: PARTITION
Пример 1
Условие
Есть заказ вместе со строками.
CLASS Order 'Заказ';
CLASS OrderDetail 'Строка заказа';
order 'Заказ' = DATA Order (OrderDetail) NONULL DELETE;
Необходимо пронумеровать строки от 1 в данном заказе в порядке их добавления.
Решение
index 'Номер строки' (OrderDetail d) = PARTITION SUM 1 ORDER d BY order(d) CHARWIDTH 4;
В данном случае, сортируем по внутреннему идентификатору строки заказа, так как гарантируется, что он возрастает при создании новых строк.
Пример 2
Условие
Есть список заказов покупателей с указанной датой.
date 'Дата' = DATA DATE (Order);
CLASS Customer 'Покупатель';
customer 'Покупатель' = DATA Customer (Order);
Необходимо для заказа найти дату предыдущего заказа этого же покупателя.
Решение
prevOrderDate 'Предыдущий заказ' (Order o) = PARTITION PREV date(o) ORDER date(o), o BY customer(o);