select [type],sum(case when rid = 1 then number else 0 end) [number0], sum(case when rid = 2 then number else 0 end) [number1] from(select *,rid=row_number() over (partition by [type] order by getdate()) from tb)t group by [type]
type不固定试试动态行转列吧!
select type,max(number)number0,min(number)number1 from a group by type
select [type],sum(case when rid = 1 then number else 0 end) [number0],
sum(case when rid = 2 then number else 0 end) [number1]
from(select *,rid=row_number() over (partition by [type] order by getdate()) from tb)t
group by [type]
from a group by type