You can use row_number() window funciton with common table expression to do that:
with cte as
(select customerID  , Attribute1 , Attribute2 , Attributen  , DateTime,
row_number()over(partition by customerID order by DateTime desc)rn
from customerArchive)
select customerID  , Attribute1 , Attribute2 , Attributen  , DateTime from cte where rn=1
If an extra column named rn is not a problem you can use *
with cte as
(select *,row_number()over(partition by customerID order by DateTime desc)rn
from customerArchive)
select * from cte where rn=1
Or you can again join the cte with customer table. It will only work if you don't have any duplicate record for a given DateTime. It will be slower
    with cte as
            (select *,row_number()over(partition by customerID order by DateTime desc)rn
            from customerArchive)
            select Customer.* from cte inner join Customer 
            on Customer.customerID=cte.customerID and Customer.DateTime=cte.DateTime
            where rn=1
*** As @nbk pointed out it’s never wise to use *. Mentioning column names might take some time but it will be much safer option.