2017-05-30 5 views
0

Ich muss den Unterschied zwischen zwei Datum außer Sonntag berechnen. Ich habe Tabelle mit Daten und ich muss die Anzahl der Daten von wiederholten Tagen vom letzten Datum berechnen.Qlikview - arrayList

wenn ich Daten wie die

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

ich diesen Code verwenden in Skript

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

und ich bekomme min date = 27-05-2017 und max date = 30-05-2017 dann verwende ich in Ausdrücke

Und erhalten Ergebnis 3 Tage. Das ist in Ordnung, aber das Problem ist, wenn ich nächste Termine habe:

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

Bei Verwendung zuvor Code I min Datum erhalten = 2017.10.05 und max date = 30-05-2017 und 18 führen, aber dies ist nicht ok.

Ich brauche nur zu zählen, stammt aus dem

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

Ich brauche max Datum zu erhalten und throw Schleife wiederholt Termine gehen und wenn Bremse, um zu sehen ist, dass Datum Sonntag, wenn ja, dann dieses Datum Schritt und weiter zählen Wiederholte Daten und wenn ich wieder Pause und wenn nicht Sonntag als close-Schleife und erinnere mich an die Anzahl der Tage.

In meinem Fall anstelle von 18 Tagen muss ich 3 Tage erhalten.

Irgendeine Idee?

Antwort

0

Ich würde empfehlen Sie einen Master-Kalender im Skript erstellen, wo Sie Gewichte oder andere Regel auf Ihre Tage anwenden können. Dann können Sie in Ihrer Tabelle oder App einfach die Daten durchlaufen oder Operationen durchführen und ihre Gewichte summieren (0: wenn Sonntag, 1: wenn nicht). Nehmen wir ein Beispiel sehen:

// 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;