By definition, all pivots aggregate, however there is a simple way to make sure all the data gets pivoted.
The columns besides for the pivot are the group by's. So you can create a row_number in your data partioned by the other group by's and include that in your pivot data. for example:
with data as (
    select 'a' key1,'1' key2,'samplecolumn' as col,'3' as val
    union all
    select 'a' key1,'1' key2,'samplecolumn' as col,'6' as val
    union all
    select 'a' key1,'2' key2,'samplecolumn' as col,'7' as val
    union all
    select 'a' key1,'2' key2,'samplecolumn' as col,'9' as val
    union all
    select 'b' key1,'1' key2,'samplecolumn' as col,'23' as val
    union all
    select 'b' key1,'1' key2,'samplecolumn' as col,'45' as val
),
data_with_rownum as (
    select *, ROW_NUMBER() over (partition by key1,key2 order by (select null)) rownum from data
)
select key1,key2,rownum,samplecolumn from data_with_rownum
PIVOT (max(val) FOR col IN (samplecolumn)) AS p;