Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Ted2
Contributor
Contributor

Create table of date with roster hours - based on roster template and startdate

I want to create a report to analyse worked hours compared to an employee’s assigned roster per day. 

Therefore I need to create a table with the amount of hours per date according to the assigned roster

I have the following tables:

ROSTERSETTINGS

Employee_id

Roster_id

Startdate_roster

Enddate_roster

 

ROSTERHOURS

Roster_id

Roster_name

Roster_days

Roster_day_sequencenumber

Roster_hours

 

ROSTERSETTINGS EXAMPLE:

 

Employee_id

Roster_id

Startdate

Enddate

Startday

999

123

1-12-2022

31-12-2099

4

 

 

ROSTERHOURS EXAMPLE:

Roster_id

Roster_name

Roster_day

Roster_day_sequencenumber

Roster_hours

123

Roster 40

Mon

1

8

123

Roster 40

Tue

2

8

123

Roster 40

Wed

3

6

123

Roster 40

Thu

4

8

123

Roster 40

Fri

5

6

123

Roster 40

Sat

6

0

123

Roster 40

Sun

7

0

 

The employee started on 1-12-2022, this is the 4th day of the assigned roster, therefore the “startday” of the ROSTERSETTINGS record is “4”.

The table I want to create is the following:

Date Roster_day_sequencenumber Roster_hours Roster_id Employee_id
1-12-2022 4 8 123 999
2-12-2022 5 6 123 999
3-12-2022 6 0 123 999
4-12-2022 7 0 123 999
5-12-2022 1 8 123 999
6-12-2022 2 8 123 999
7-12-2022 3 6 123 999
8-12-2022 4 8 123 999
9-12-2022 5 6 123 999
10-12-2022 6 0 123 999
11-12-2022 7 0 123 999

 

Many thanks in advance for your help!

Labels (1)
1 Reply
jcmachado
Contributor III
Contributor III

You can create this table by joining the ROSTERSETTINGS and ROSTERHOURS tables based on Roster_id and then using a loop to generate the dates starting from the Startdate_roster and the Startday.

Here's an example of how you can do this in QlikView script:

// Load ROSTERSETTINGS table

LOAD

    Employee_id,

    Roster_id,

    Startdate_roster,

    Enddate_roster,

    Startday

FROM

    ROSTERSETTINGS.qvd (qvd);

 

// Load ROSTERHOURS table

LOAD

    Roster_id,

    Roster_name,

    Roster_day,

    Roster_day_sequencenumber,

    Roster_hours

FROM

    ROSTERHOURS.qvd (qvd);

 

// Create a new table with Date, Roster_day_sequencenumber, Roster_hours, Roster_id, and Employee_id

ROSTER:

LOAD

    date(date#(Startdate_roster, 'DD-MM-YYYY') + Roster_day_sequencenumber - Startday) as Date,

    Roster_day_sequencenumber,

    Roster_hours,

    Roster_id,

    Employee_id

RESIDENT

    ROSTERSETTINGS

    JOIN

    ROSTERHOURS

ON

    ROSTERS