第 1-7 天的循环数字 ID,oracle APEX

Looping Numeric ID for days 1-7, oracle APEX

我有一个 table 用数字标识一周中的每一天。

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); ...

在另一个包含发货的 table 中,有一个标记为“可用日”的列,其中包含一个数字,表示收到货物后多少天可以提供产品。例如,如果它显示 14 天,初始日期为星期一 (1),则它将在 14 天后的星期日 (7) 可用。目前,我使用了:

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)。

如何添加值并在计数超过 7 时强制计数重置为 1。

我能够通过使用解决问题 mod(sd.day_id + sch.available_day, 7)CONCAT

这样简单明了很多:

mod(sd.day_id - 1 + sch.available_day, 7) + 1
   || ' (' || sch.available_day || ')' as "Available Day"