Your second post changes the approach, since it shows that skills are not instances of one field.
You haven't answered the question of whether the particular values are always the same per knowledge level. Let's assume they are. Then I think you could create a formula like {@level}:
stringvar x := totext({table.sales1})+","+totext({table.callbacks})+","+totext({table.sales2})+","+totext({table.sales3})+","+totext({table.sales4})+","+totext({table.specialsales1})+","+totext({table.support})+","+totext({table.promotions})+","+totext({table.sales5})+","+totext({table.sales6})+","+totext({table.sales6});
if x = "30,40,48,0,10,10,48,0,30,30,40" then
"Knowledge Level 1" else
if x = "30,40,40,0,20,20,48,10,30,30,40" then
"Knowledge Level 2" else
if x := "40,30,0,48,20,0,0,10,30,30,40" then
"Knowledge Level 3" else
if x = "40,40,0,20,0,0,0,0,0,0,0" then
"Knowledge Level 4"
Then you can use this formula as your column field in a crosstab. For the summary, use a distinctcount of the agentname field. Then right click on the summary->format field->common->display string and enter:
if currentfieldvalue = 0 then "" else "Yes"
-LB