create table 表头(fid int)
insert into 表头 values(1)
create table 表体(fid int,物料 varchar(10),采购员 varchar(10))
insert into 表体 values(1 ,'a', 'a')
insert into 表体 values(1 ,'b', 'b')
insert into 表体 values(1 ,'c', 'a')
go
select fid = (select count(distinct 采购员) from 表体 where fid = t.fid and 采购员 < t.采购员) + 1 , 物料,采购员 from 表体 t order by fid
drop table 表头 , 表体
这是wugui大侠给写的一段sql,哪位给详细解释下,包括sql执行的原理等等,理解不上去,谢谢啦
------解决方案--------------------
我记得你是求个序号?
你把这个看懂了,就明白了.这个列只对分数排序
- SQL code
表jh03有下列数据:name scoreaa 99bb 56cc 56dd 77ee 78ff 76gg 78ff 501. 名次生成方式1,Score重复时合并名次SELECT * , Place=(SELECT COUNT(DISTINCT Score) FROM jh03 WHERE Score >= a.Score)FROM jh03 aORDER BY Place结果Name Score Place ---------------- ----------------- ----------- aa 99.00 1ee 78.00 2gg 78.00 2dd 77.00 3ff 76.00 4bb 56.00 5cc 56.00 5ff 50.00 62. 名次生成方式2 , Score重复时保留名次空缺SELECT * , Place=(SELECT COUNT(Score) FROM jh03 WHERE Score > a.Score) + 1FROM jh03 aORDER BY Place结果Name Score Place --------------- ----------------- ----------- aa 99.00 1ee 78.00 2gg 78.00 2dd 77.00 4ff 76.00 5bb 56.00 6cc 56.00 6ff 50.00 8