Firebird query pivot
A pivot transposes rows to columns based on a discriminator column. Your example data doesn't show a discriminator column, and the data also seems to indicate that this could lead to a variable number of columns (depending on the attendance per date), which is not possible in Firebird. Instead it looks like you want to aggregate those dates in a single column.

Assuming that is what you want, you can use LIST combined by a group by on the date part of the timestamp, for example:

select surname, name, list("WHEN", ' ')
from users
left join attendant on users.id = attendant.userid
group by surname, name, cast("WHEN" as date)


Be aware: LIST does not guarantee an order. You may need to use an intermediate order by on "WHEN" in a sub-query as a work around, but that trick does not always work (especially as in this case we're grouping on a derivative of "WHEN").