日期:2014-05-17  浏览次数:20464 次

SQL特殊排序
想根据商品编号和进价两个字段进行排序,商品编号相同的按进价排序,实际以下效果

商品编号 进价 采购员 排序
100006 11.900000 陈雅 1
100006 11.800000 王玲波 2
100006 11.700000 张红 3
100008 2.790000 陈雅 1
100008 2.780000 王玲波 2
100008 2.750000 张红 3
100012 6.600000 陈雅 1
100012 6.400000 王玲波 2
100012 6.000000 王玲波 3


这个SQL语句应该如何写?

------解决方案--------------------
SQL code
declare @A table(商品编号 int,进价 decimal(18,6),采购员 nvarchar(4))
insert into @A
select 100006, 11.900000, N'陈雅' union all
select 100006, 11.800000, N'王玲波' union all
select 100008, 2.780000, N'王玲波' union all
select 100008, 2.750000, N'张红' union all
select 100012, 6.600000, N'陈雅' union all
select 100012, 6.400000, N'王玲波' union all
select 100012, 6.000000, N'王玲波' union all
select 100006, 11.700000, N'张红' union all
select 100008, 2.790000, N'陈雅'
select *,row_number() over(partition by 商品编号 order by 商品编号,进价 desc) rn from @A

/*

(9 row(s) affected)
商品编号        进价                                      采购员  rn
----------- --------------------------------------- ---- --------------------
100006      11.900000                               陈雅   1
100006      11.800000                               王玲波  2
100006      11.700000                               张红   3
100008      2.790000                                陈雅   1
100008      2.780000                                王玲波  2
100008      2.750000                                张红   3
100012      6.600000                                陈雅   1
100012      6.400000                                王玲波  2
100012      6.000000                                王玲波  3

(9 row(s) affected)


*/