当前位置: 代码迷 >> Sql Server >> SQL非一般排序
  详细解决方案

SQL非一般排序

热度:73   发布时间:2016-04-27 11:27:06.0
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 @Aselect 100006, 11.900000, N'陈雅' union allselect 100006, 11.800000, N'王玲波' union allselect 100008, 2.780000, N'王玲波' union allselect 100008, 2.750000, N'张红' union allselect 100012, 6.600000, N'陈雅' union allselect 100012, 6.400000, N'王玲波' union allselect 100012, 6.000000, N'王玲波' union allselect 100006, 11.700000, N'张红' union allselect 100008, 2.790000, N'陈雅'select *,row_number() over(partition by 商品编号 order by 商品编号,进价 desc) rn from @A/*(9 row(s) affected)商品编号        进价                                      采购员  rn----------- --------------------------------------- ---- --------------------100006      11.900000                               陈雅   1100006      11.800000                               王玲波  2100006      11.700000                               张红   3100008      2.790000                                陈雅   1100008      2.780000                                王玲波  2100008      2.750000                                张红   3100012      6.600000                                陈雅   1100012      6.400000                                王玲波  2100012      6.000000                                王玲波  3(9 row(s) affected)*/
  相关解决方案