• One way of achieving this is by creating your source query such that you get one row per job code history. So, get results that look like this:

    (EmployeeNumber, FirstName, LastName, AttributeName, AttributeValue)

    12345,Peter,Griffin,JobCodeHistory,B123

    12345,Peter,Griffin,JobCodeHistory,B056

    54321,Glen,Quagmire,,

    Process this file using an asynchronous script component.

    This could work like this, for each row in the file:

    1) Is the employee on this row different from the one on the preceding row?

    a) Yes: Write out EmployeeNumber, FirstName, LastName, AttributeName, AttributeValue

    b) No: Write out AttributeName, AttributeValue.

    With some additional logic to create the blank row between employees.

    The script component needs to be async because the number of rows going into it is different from the number coming out.

    If you haven't even tried to resolve your issue, please don't expect the hard-working volunteers here to waste their time providing links to answers which you could easily have found yourself.