So from the data above i end up with the data in this logical heirarchy i.e. for each DNorPattern i can expand to see the hunt list then expand the huntlist to see the linegroups then expand the linegroups to see the members! (I'm putting this in code to keep the indentation)

You see that here you create grouping rows with Pilot, Huntlist, and LineGroup together and then a list of members. You have to take a bit more control to print your header information between iterations.

And truthfully, if you did it that way, you could do it without grouping at all by sorting your data on multiple values and monitoring changes on pilot, huntlist, and linegroup values.