1. Ну что нибудь типа (но там разреженная таблица получается)
tmp1:
LOAD
id,
If(not Previous(id)=id,a) as a1,
If(Previous(id)=id,a) as a2
Resident tmp
Order By id, a;
DROP Table tmp;
Если нужна сжатая таблица, то:
2. Можно еще так
tmp1:
LOAD id, SubField(s,'|',1) as a1, SubField(s,'|',2) as a2;
LOAD id, Concat(a,'|') as s
Resident tmp
Group By id;
DROP Table tmp;
3. Можно так (если агентов неизвестно сколько)
tmp1:
LOAD id, 'agent'&AutoNumber(a, id) as attr, a as value
Resident tmp;
DROP Table tmp;
gen: Generic LOAD * Resident tmp1;
DROP Table tmp1;
fin: LOAD FieldValue('id', RowNo()) as id
AutoGenerate FieldValueCount('id');
FOR vIter = NoOfTables()-1 to 0 step -1
LET vTable = TableName($(vIter));
IF '$(vTable)' like 'gen*' THEN
Left Join (fin) LOAD * Resident $(vTable);
DROP Table $(vTable);
ENDIF;
NEXT vIter;
4. Вариант с джойнами в цикле и т.п.
А вообще, я конечно не знаю какая задача, но мне больше нравится вот так:
tmp1:
LOAD id, a, AutoNumber(a, id) as a_num
Resident tmp;
DROP Table tmp;
* единственное надо разобраться с сортировкой значений если она вообще нужна...