I think your sample table in the post got mixed up, please check.
If I understand correctly, you can try transforming your table from a cross table to a straight table
CROSSTABLE (Field, Value) LOAD IDField, Movement, Decline, Etc RESIDENT YourTable;
This creates a table with 3 fields, IDField, Field, Value
Then Load this Table to get your result like
LOAD IDField, Concat(Field,';') as ConcatField RESIDENT TMP WHERE Value >0 GROUP BY IDField;