Цикл числовой идентификатор для дней 1-7, оракул APEX - PullRequest
0 голосов
/ 29 мая 2018

У меня есть таблица, в которой каждый день недели обозначается номером.

CREATE TABLE days_schedule (
days_schedule_id INT,
schedule_id INT,
day_id INT);

INSERT INTO TABLE days_schedule
VALUES (1001, 1007, 1);

INSERT INTO TABLE days_schedule
(1002, 1008, 2); ...

В другой таблице, содержащей грузы, есть столбец с пометкой «ДОСТУПНЫЙ ДЕНЬ», в котором будет указано число дней.после получения груза, товар доступен.Например, если в нем указано 14 дней с начальным днем ​​понедельника (1), то он будет доступен в воскресенье (7), 14 дней спустя.На данный момент я использовал:

SELECT ...,
CONCAT(CONCAT(CONCAT(
sd.day_id + sch.available_day, ' ('
), sch.available_day
), ')'
) as 'Available Day'
FROM schedule sch
INNER JOIN days_schedule sd
ON (sch.schedule_id = sd.schedule_id)

Проблема, с которой я сталкиваюсь, заключается в том, что простое добавление значений двух столбцов просто даст сумму (15 в приведенном выше примере).

Как я могу добавить значения и заставить счет сбрасываться до 1, когда он становится выше 7.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Это намного проще и понятнее:

mod(sd.day_id - 1 + sch.available_day, 7) + 1
   || ' (' || sch.available_day || ')' as "Available Day"
0 голосов
/ 29 мая 2018

Мне удалось решить проблему с помощью mod(sd.day_id + sch.available_day, 7) в пределах CONCAT

...