--生成測試數據
create table tb1(a varchar(20) , b float)
insert into tb1 values('001' , 1)
insert into tb1 values('001' , 2)
insert into tb1 values('001' , 3)
insert into tb1 values('002' , 2)
insert into tb1 values('002' , 5)
insert into tb1 values('003' , 4)
insert into tb1 values('003' , 5)
insert into tb1 values('004' , 10)
insert into tb1 values('005' , 12)
insert into tb1 values('005' , 30)
go
SELECT a,
MAX(CASE rid WHEN 1 THEN b ELSE 0 END )B1,
MAX(CASE rid WHEN 2 THEN b ELSE 0 END )B2,
MAX(CASE rid WHEN 3 THEN b ELSE 0 END )B3-
FROM
(
SELECT rid=ROW_NUMBER() OVER(PARTITION BY a ORDER BY b ),*
FROM tb1
) AS T
GROUP BY a
drop table tb1