【问题标题】:Qlikview - arrayListQlikview - 数组列表
【发布时间】:2017-10-30 21:16:25
【问题描述】:

我需要计算两个日期之间的差异,不包括星期日。我有日期表,我需要计算自上次日期以来重复天数的日期。

如果我有这样的日期

27-05-2017
29-05-2017
30-05-2017

我在脚本中使用此代码

date(max(Date)) as dateMax,
date(min(Date)) as dateMin

我得到最小日期 = 27-05-2017 和最大日期 = 30-05-2017 然后我在表达式中使用

=floor(((dateMax - dateMin)+1)/7)*6 + mod((dateMax - dateMin)+1,7)
+ if(Weekday(dateMin) + mod((dateMax - dateMin)+1,7) < 7, 0, -1)

并在 3 天后获得结果。没关系,但问题是我是否还有下一个日期:

10-05-2017
11-05-2017
27-05-2017
29-05-2017
30-05-2017

当使用之前的代码时,我得到 min date = 10-05-2017 和 max date = 30-05-2017 和结果 18,但这是不行的。

我只需要计算日期

27-05-2017
29-05-2017
30-05-2017

我需要获取最大日期并抛出循环重复日期,如果有刹车看看那个日期是星期天,如果是,那么踩那个日期并继续计算重复日期,如果我再次休息,如果不是星期天,则关闭循环并记住天数。

在我的情况下,我需要 3 天而不是 18 天。

有什么想法吗?

【问题讨论】:

    标签: date qlikview


    【解决方案1】:

    我建议您在脚本中创建一个主日历,您可以在其中将权重或任何其他规则应用于您的日子。然后在您的表格或应用程序中,您可以遍历日期或执行操作并求和它们的权重(0:如果是星期天,1:如果不是)。我们来看一个例子:

    // In this case I'll do a master calendar of the present year
    
    LET vMinDate = Num(MakeDate(year(today()),1,1));
    LET vMaxDate = Num(MakeDate(year(today()),12,31));
    
    
    Calendar_tmp:
    LOAD
    $(vMinDate) + Iterno() - 1 as Num,
    Date($(vMinDate) + Iterno() - 1) as Date_tmp
    AUTOGENERATE 1 WHILE $(vMinDate) + Iterno() - 1 <= $(vMaxDate);
    
    
    Master_Calendar:
    LOAD
           Date_tmp AS Date,
           Week(Date_tmp) as Week,
           Year(Date_tmp) as Year,
           Capitalize(Month(Date_tmp)) as Month,
           Day(Date_tmp) as Day,
           WeekDay(Date_tmp) as WeekDay,
           if(WeekDay = '7',0,1) as DayWeight //HERE IS WHERE YOU COULD DEFINE A VARIABLE TO DIRECTLY COUNT THE DAY IF IT IS NOT SUNDAY
           'T' & ceil(num(Month(Date_tmp))/3)  as Quarter,
           'T' & ceil(num(Month(Date_tmp))/3) & '-' & right(year(Date_tmp),2) as QuarterYear,
           date(monthStart(Date_tmp),'MMMM-YYYY') as MonthYear,
           date(monthstart(Date_tmp),'MMM-YY') as MonthYear2      
    RESIDENT Calendar_tmp
    ORDER BY Date_tmp ASC;
    
    DROP Table Calendar_tmp;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多