Although it's not possible in the general case, you can do it when you know the maximum number of items an account can possibly get. For example, if you know that the number is three or less, you can combine windowing functions of SQL Server with the generic GROUP BY to get your results.
Here's a quick example (in your case, be prepared to write a lot more SQL)
create table t (id int, name varchar(max), amt decimal(13, 10))
To oversimplify, in my example name uniquely identifies an account, and id is a surrogate key. The select for up to three items looks as follows:
select name, max(amt1) as amt1, max(amt2) as amt2, max(amt3) as amt3 from
(select
name
, case ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) when 1 then amt else null end as amt1
, case ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) when 2 then amt else null end as amt2
, case ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) when 3 then amt else null end as amt3
from t
) as ttt
group by name
If the data in the table looks like this
1 xyz 11.0000000000
2 xyz 22.0000000000
3 xyz 33.0000000000
4 abc 44.4000000000
5 abc 55.5000000000
query result will look like this:
abc 44.4000000000 55.5000000000 NULL
xyz 11.0000000000 22.0000000000 33.0000000000
If a name has more than three amounts associated with it, the data for rows for and over will be dropped.
Edit: as Mark pointed out in his answer above, you can use pivot to simplify the query a lot. It will also let you change the number of columns more easily:
SELECT name, [1] as amt1, [2] as amt2, [3] as amt3
FROM (SELECT name, ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) as sequence, amt FROM t) AS src
PIVOT (max(amt) FOR sequence IN ([1], [2], [3])) AS pvt