当前位置: 代码迷 >> Sql Server >> 一个SQL排序难题,求指教解决方案
  详细解决方案

一个SQL排序难题,求指教解决方案

热度:102   发布时间:2016-04-27 19:15:13.0
一个SQL排序难题,求指教
CREATE TABLE [dbo].[zf_ffr](
[id] [int] NULL,
[xingming] [varchar](10) ,
[fenshu] [int] NULL,
[lianxi] [varchar](5) 
)
insert into zf_ffr values(1,'a',50,'1')
insert into zf_ffr values(2,'aa',80,'1')
insert into zf_ffr values(3,'b',60,'2')
insert into zf_ffr values(4,'bb',90,'2')
insert into zf_ffr values(5,'c',85,'3')
insert into zf_ffr values(6,'cc',30,'3')

上表实现分房排名,字段分别为编号、姓名,分数、标志。要求按分数从高到低实现双职工分房排名。其中标志位相同代表这两个分房人为一家,按照家庭分(家庭取夫妻两人高分者)从高到低排序。达到目标结果为:
4,bb,90,2
3,b,60,2
5,c,85,3
6,cc,30,3
2,aa,80,1
1,a,50,1
谢谢

------解决方案--------------------
SQL code
CREATE TABLE [dbo].[zf_ffr]([id] [int] NULL,[xingming] [varchar](10) ,[fenshu] [int] NULL,[lianxi] [varchar](5)  )insert into zf_ffr values(1,'a',50,'1')insert into zf_ffr values(2,'aa',80,'1')insert into zf_ffr values(3,'b',60,'2')insert into zf_ffr values(4,'bb',90,'2')insert into zf_ffr values(5,'c',85,'3')insert into zf_ffr values(6,'cc',30,'3')insert into zf_ffr values(7,'d',80,'4')insert into zf_ffr values(8,'dd',30,'4')select * from zf_ffr a order by (select max(fenshu) from zf_ffr where lianxi=a.lianxi) desc,lianxi,fenshu desc/*id          xingming   fenshu      lianxi----------- ---------- ----------- ------4           bb         90          23           b          60          25           c          85          36           cc         30          32           aa         80          11           a          50          17           d          80          48           dd         30          4(8 行受影响)*/godrop table zf_ffr
  相关解决方案