HANA While 循环

HANA While Loop

我有一个要求,我认为有一个可能的解决方案,但我想先验证它以确保它是最好的方法。

当前有一个视图需要添加 2 个新字段。第一个字段将以任何一天都不会超过 24 的方式展开。分配将从开始日期开始,并在每个日历日继续进行,直到所需的小时数全部用完。机器使用的每一天都会创建一个新的日期条目。

例如,一台机器需要 80 个小时才能完成一个零件。新的输出将创建 4 条相同的记录,但新的日期和时间必填字段除外,如下所示。

Date Hours required
June 1 24
June 2 24
June 3 24
June 4 8

我的想法是创建一个 table 函数并使用 while 循环不断检查具有所需小时数的当前字段并检查其是否大于 0 并减去 24 直到它小于 24 in这将是最后的条目。每次循环时,它还会将开始日期增加 1 天。然后我会将 table 函数放在图形视图中,然后前端可以使用它。

如有任何反馈,我们将不胜感激!

假设您的 table 具有以下结构:

CREATE COLUMN TABLE "MachineCapacityHrs"( 
"Machine"  nvarchar(10),
"TotalHoursRequired" int,
"StartDate"   date
)

然后您可以在 table 函数中使用以下语句生成所需的日期和时间,而无需使用循环:

select e."Machine",e."TotalHoursRequired",e."StartDate", 
t.date_sql as "DateSequence" ,
case when e."EndDate"<>t.date_sql then 24 else "Hrs" end as "HrsRequired"
from
(   select "Machine","TotalHoursRequired","StartDate",
    add_days("StartDate",case when floor("TotalHoursRequired"/24)=0 then 0
            else floor("TotalHoursRequired"/24) end
        ) as "EndDate",
    floor("TotalHoursRequired"/24) as "Days", 
    mod("TotalHoursRequired",24) as "Hrs",
    case when mod("TotalHoursRequired",24) >0 then floor("TotalHoursRequired"/24)+1 else floor("TotalHoursRequired"/24) end as "DateCount"
    from "MachineCapacityHrs" 
)e left outer join ( select date_sql from _sys_bi.m_time_dimension
)t on  t.date_sql  between e."StartDate" and e."EndDate"

结果: enter image description here